Lightsailで動くWordPressのCPU負荷を軽減させる設定例

Lightsailで動くWordPressのCPU負荷を軽減させる設定例

前回のことの発端でもあるWordpressの高負荷。
最近問題が頻発しているため、負荷軽減対策をしました。

5%ゾーンを超える

Amazon Lightsail の$5プランは「CPU負荷5%以下」が常用ライン。
ところがちょくちょく超えるため、CPUバーストキャパシティ(貯金みたいなもの)を食いつぶしています。

CPU負荷は平均5%、低くても2.5%ほど。
Google Analyticsでリアルタイム訪問を確認してもほぼ0人なのに。

2/6に猛烈に減っているのはgrepで全文検索したため。
しかしそれを止めてもなかなか回復できず、急遽リソース軽減策に着手しました。

「mod_rewriteで0.0.0.0に飛ばす」を復活

.htaccessによるdenyを止め、mod_rewriteを使ったクライアントキャッシュによる対策を復活させました。

有効化と承認ができなくなったJetpackプラグインを復旧させるまでの手順 | 徒労日記

2021/02/08 追記
処理の負荷についてしらべると、このmod_rewirteで処理した方が単純にDeny from allするより良いという意見が強いようです。
「このURLは0.0.0.0である」と一度クライアントにキャッシュさせる事により、以降のアクセス自体を無くすのだとか。

悪意をもってアクセスする側がブラウザなんかを使うかは懐疑的ですが、一応このRewriteRuleを復活させました。

$ vi /opt/bitnami/apps/wordpress/conf/httpd-app.conf
<IfModule mod_rewrite.c>
 ・・・
RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]

wp-cronの停止

WordPressにおける定期・定時処理を請け負うwp-cron。
これがアクセスされる度に呼び出されるため停止させます。

弊害として予約投稿やBackWPupプラグインによる定期バックアップが動かなくなります。

wp_cronの無効化

wp-config.phpの前半に下記を追加。
ついでに記事執筆時の自動セーブも頻度を下げ(10分に1回)、負荷を低減させます。

$sudo vi /opt/bitnami/apps/wordpress/htdocs/wp-config.php
/** Change AutoSave interval  */
define("AUTOSAVE_INTERVAL", 600);

/* CRON STOP 2021-02-07 wp load reduction*/
define('DISABLE_WP_CRON', 'true');

BackWPupの設定変更

ジョブのトリガーを変更。
wp-cronから、リンクURLにアクセスし実行する方式にします。

  • [BackWPup]>[ジョブ]>対象のジョブをクリック>[スケジュール]タブ>ジョブスケジュール:ジョブの開始方法を”リンク”へ

ここのリンクをメモ。

Cronへ追記

BackWPupに設定していたものと同じタイミングでリンクURLにcurlでアクセスさせます。
ついでに、元々のwp-cron.phpも1日1回だけ実行。

$sudo crontab -e
・・・
# WP-Cron manualy exec.
0 2 * * * curl https://dolls.tokyo-cron.php > /dev/null 2>&1

# BackWPup manual wp-cron access.
#  SQL Database Backup
30 3 * * 2 curl https://dolls.tokyo-cron.php?_nonce=▲▲▲▲▲▲▲&backwpup_run=runext&jobid=1
#  Full Backup
30 4 1 * * curl https://dolls.tokyo-cron.php?_nonce=▼▼▼▼▼▼▼&backwpup_run=runext&jobid=2

DB Backupは毎週火曜日のAM3:30、フルバックアップは毎月1日のAM4:30に実行する設定。

※動作確認中

プラグインの停止

緊急措置として、ルックフィールに関わる部分のプラグインだけ停止しました。

  • Lightbox系画像エフェクト
  • 検索欄のサジェスト(SearchWP Live Ajax Search)
  • Syntax Highlighter系
  • キャッシュ系(Autoptimize,W3C Super Cache)
  • エディタ(Classic Edeter, TinyMCE系)

バーストキャパシティの借金返済が終わったら戻します。

軽減の結果

これらの軽減を行った結果、バーストキャパシティ100%を取り戻せました。

CPU負荷は1.5%~2.5%の間で安定。
一度外したプラグインを戻しても、キャッシュ動作で高速化させても問題なし。

PageSpeed Insightsのスコアでもモバイル91、パソコン100をキープしています。

あとは本来のユーザーアクセスで負荷5%を超えてほしいものです。

コメントを残す