説明
次のようなエラーログを見たことはありますか ?
PHP Fatal error: Allowed memory size of xxxxxx bytes exhausted (tried to allocate xxx bytes) in /var/www/wordpress/wp-includes/wp-db.php on line 2007
これはつまり、データベースからデータを取得することで PHP メモリー上限 を超えてしまったことを意味します。多くの場合、サイトが大量のデータを持っており、凄まじい量のループを行なっているときにこのケースが発生します。
しかし、私たちが知りたいのは、どのプラグインがデータを取得しているのか?です。
葉隠は wp-db.php
がメモリー上限エラーを引き起こすと、追加の情報を error.log ファイルに追加します:
[08-May-2019 10:28:37 UTC] wpdb Error Backtrace: #1 Kunoichi\Hagakure\DbLogger->filter_query() /app/public/wp-includes/class-wp-hook.php Line 286 #2 WP_Hook->apply_filters() /app/public/wp-includes/plugin.php Line 208 #3 apply_filters /app/public/wp-includes/wp-db.php Line 1871 #4 wpdb->query() /app/public/wp-includes/wp-db.php Line 2579 #5 wpdb->get_results() /app/public/wp-includes/class-wp-query.php Line 2979 #6 WP_Query->get_posts() /app/public/wp-includes/class-wp-query.php Line 3387 #7 WP_Query->query() /app/public/wp-includes/post.php Line 1961 #8 get_posts /app/public/wp-content/plugins/hagakure/hagakure.php Line 34 #9 {closure} /app/public/wp-includes/class-wp-hook.php Line 286 #10 WP_Hook->apply_filters() /app/public/wp-includes/class-wp-hook.php Line 310 #11 WP_Hook->do_action() /app/public/wp-includes/plugin.php Line 465 #12 do_action /app/public/wp-includes/template-loader.php Line 13 #13 require_once /app/public/wp-blog-header.php Line 19 #14 require /app/public/index.php Line 17
このログは wp-db.php
によって引き起こされるメモリー制限の致命的なエラーが必ず後に続きます。これで #8
が get_posts
を繰り返し呼び出していることが判明します。
CloudWatch Logs のような通知サービスを利用してログを監視することをオススメします。
この類のエラーは本番環境で起こることが多く、しかもそれを目にすることはあまりありません。
私たちは葉隠を自分たちのホスティングサービスで利用していますので、実装の詳細に触れたブログが公開されるのを楽しみにしてください !
このプラグインはまた、エラーログにデバッグバックトレースを追加します。詳細なバックトレースを出力するエラーレベルを変更したい場合は、定数を定義してください:
define( 'HAGAKURE_ERROR_LEVEL', E_NOTICE | E_USER_WARNING | E_WARNING | E_USER_ERROR );
Besides that, if SAVEQUERIES
is set true
, the slow query log will be logged with PHP debug backtrace. This helps you to debug.
Acknowledgements
The base text for dummy content is “Three Ghost Story” by Charles Dickens. The text file is modified the one of Project Gutenberg.
インストール
hagakure
フォルダーを/wp-content/plugins
ディレクトリーにアップロードしてください。- WordPress の “プラグイン” メニューから有効化してください。
- 以上です。このプラグインはバックグラウンドで動作します。
FAQ
-
どうやったら貢献できますか?
-
このプラグインは GitHub kuno1/hagakure にホストされています。気軽にプルリクエストを送ったり、イシューを立てたりしてください。
評価
貢献者と開発者
葉隠 – Yet Another Error Reporter はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。
貢献者変更履歴
1.2.0
- Slow query can be logged with the backtraces.
1.1.0
- Add Request URI to backtrace.
1.0.0
- Warning と Notice の詳細を扱えるよう変更。
0.8.0
- 最初のリリース。