導入部
AWS上で運用する社内専用のWordPressサイトは、セキュリティ面で優れている一方で、管理画面が亀のように遅くなることがあります。そんなとき、何が原因で、どう解決すればいいのでしょうか?今回は、そんな切実な問題を抱えた私の体験を元に、具体的な解決策をシェアしたいと思います。
問題の発生
投稿ページなどはサクサク動くのに、なぜかダッシュボードやプラグインページの表示だけが異様に遅い。とにかく遅い。初期対応として考えられるプラグインの停止やテーマの変更も試してみましたが、大きな改善は見られませんでした。
原因調査と一時対応
次に取り組んだのが、「Query Monitor」というプラグインを使ったパフォーマンスの監視です。その結果、ダッシュボードではブラウザやPHPのバージョンをチェックするプロセス、プラグインページではプラグインの更新をチェックするプロセスがタイムアウトを起こしていることが明らかになりました。
ダッシュボードの表示には元々10秒もかかっていました(タイムアウト5秒)
プラグインページの表示には元々8秒もかかっていました(タイムアウト4秒)
タイムアウト設定の変更
デフォルトのタイムアウト時間は4~5秒。これを1秒に変更するコードをfunction.phpに記述することで、遅延はある程度改善されました。しかし、これはあくまでも一時的なバンドエイドに過ぎません。他のプロセスに影響を与えかねないリスクも抱えています。
add_filter('http_request_args', 'custom_http_request_args', 100, 1);
function custom_http_request_args($r) {
$r['timeout'] = 1;
return $r;
}
根本的な解決策
本来であれば、WordPressが外部通信を行う際に必要な接続のみを許可するセキュリティグループ設定を見直したり、AWSのプロキシサーバーを経由させるなどの方法が考えられます。これらの方法でより安全で、サイト運用において持続可能な改善になるでしょう。
結論
タイムアウトを短く設定することで一時的にスピードは向上しましたが、これには応急処置です。表示スピードはまだ許容範囲であるため、この状態を「当面の解決策」と位置付けつつ、長期的な解決策を模索することをお勧めします。