技術情報

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パラメータenablejsapiplayer_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のデフォルト値1000500またはそれ以下の値に変更して、サブテーブルあたりの行数を制限するとよいでしょう:

[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

クラウドの場合は、サポートに連絡すれば、これらの設定を調整してくれるはずだ。