Media Analyticsの “Allowed memory size exhausted “エラーを修正するには?
非常にまれなケースですが、1日に何十万もの異なるメディアURLをトラッキングしている場合、Media Analyticsによってメモリエラーが発生することがあります。これは、すべてのメディアリソースのURLに、以下の例のkey
のようなランダムなURLパラメータが含まれている場合に典型的に起こりうる:
https://example.com/media.mp4?key=123
https://example.com/media.mp4?key=456
この場合、毎回変更されるURLパラメータを除外することで、このメモリ問題を回避することができる。上記の例では、除外するURLパラメータはkey
. このパラメータを除外するには、ローカルの設定ファイルを$matomoDir/config/config.ini.php
に置き、デフォルトで、2つのURLパラメータenablejsapi
、player_id
のみを除外するmedia_analytics_exclude_query_parameters
の設定を調整します:
[MediaAnalytics]
media_analytics_exclude_query_parameters=enablejsapi,player_id,key
ランダムに変更されるURLパラメータを、カンマ区切りでmedia_analytics_exclude_query_parameters
設定に追加するだけです。これにより、メモリの問題が解決されるだけでなく、視聴回数や再生回数が常に1
が、特定のメディアを閲覧・再生した訪問者数に基づいて正確に計算することができる。
この問題を過去にさかのぼって修正したい場合は、データベースで以下の SQL クエリを実行してください。必要に応じてデータベースのテーブルプレフィックスmatomo_、idSite、URL パラメータキーを調整してください。
update matomo_log_media set resource = substring_index(resource, '?key', 1) where idsite = 1 and server_time > date_sub(NOW(), INTERVAL 1 week) and resource like '%?key%'
上記で問題が解決しない場合
それでもMedia Analyticsからメモリエラーが表示される場合は、config/config.ini.php
のデフォルト値1000
を 500
またはそれ以下の値に変更して、サブテーブルあたりの行数を制限するとよいでしょう:
[MediaAnalytics]
datatable_archiving_maximum_rows_subtable_media=500
プラグインのバージョン4.2.0から、アーカイブされたテーブルを生成するために使用される結果を制限するオプションがあります。デフォルトでは、主な結果は10,000行に制限され、最も多くのプレーをしたリソースが最初の10,000行に入るようにランク付けされます。残りのリソースはすべてOther
行に表示されます。レポート内でリソースを展開すると、そのリソースに固有の二次情報が表示されます。デフォルトでは、これらの結果は75,000行に制限され、10,000のリソースに分割されます。セカンダリ情報が不完全に見える場合は、セカンダリ制限を増やすか、プライマリ制限を減らすことができます。プライマリ制限を減らすと、MediaAnalyticsレポートのアーカイブ中にメモリ不足になる可能性も低くなる。新しいコンフィグをconfig/config.ini.php
ファイルは次のようになる:
[MediaAnalytics]
archiving_ranking_query_row_limit_primary = 5000
archiving_ranking_query_row_limit_secondary = 70000
クラウドの場合は、サポートに連絡すれば、これらの設定を調整してくれるはずだ。