日々アクセスが順調に伸びてきてうれしい限りです。アクセスの増加とともにサーバ負荷の増加、表示速度の遅延が増えてたので色々と試行錯誤してみました。
Plugin(プラグイン)の導入
導入したプラグイン
- Unveil Lazy Load
画像の遅延読み込みを行うためのプラグインです。どうしても画像が多くなるので導入しました。 - WP-Optimize
データベースの自動クリーンアップと最適化を行うためのプラグインです。WordPressに限る話ではありませんが、データベースはどうしてもごみがたまってくるのでそちらを処理します。
廃止したプラグイン
- DB Cache Reloaded Fix
wp-cron.phpを停止していると正常に動作しないようなので使用を停止しました。もう少しアクセスが増えて来たらやろうと思います。 - ページキャッシュ系プラグイン
私が使用しているテーマがページキャッシュ系プラグインとの相性が悪いのと、逆に重くなってしまったので使用を停止しました。ページキャッシュ系プラグインはもう少し研究が必要なようです。
WordPressカスタマイズ
サーバ移転、プラグインの整理を行いまして、最後にWordPress自体を少々弄くってみました。
wp-cron.phpの停止
WordPressにはcronのような機能があり予約投稿などが行えますが、これは擬似的なものでページの表示など外部からのアクセスがトリガーとなり「wp-cron.php」が動作しています。なので、頻繁にアクセスがあると毎回「wp-cron.php」が動作してサーバ負荷が高くなってしまうのでこれを停止し、レンタルサーバに備わっているcronで1時間ごとに動作させるようにしました。
「wp-cron.php」を動作させるシェルスクリプトを作成します。
#!/bin/sh cd [WordPressをインストールしたディレクトリ] [WordPressをインストールしたディレクトリ]/wp-cron.php exit
シェルスクリプトをサーバにアップロードし、サーバのcronで毎時実行するよう設定します。
※追記(2015/05/17)
WordPressでマルチサイト機能を有効にしていると、上記の設定では正常に動作していないようでしたので再設定しました。再設定の内容は「WordPressのマルチサイト機能を使うとwp-cron.phpの停止が厄介だった」を参考にしてください。
リビジョンと自動保存の停止
WordPressには記事を作成している際にある一定間隔で自動保存がされています。長い時間記事を書いていると何度も自動保存され、それがサーバ負荷につながっていることが考えられたので、停止させました。また、保存するたびにリビジョンが生成されデータベースのゴミとなるのでそれも停止させました。
define('WP_POST_REVISIONS', false); define('AUTOSAVE_INTERVAL', 3600);
サーバ移転
ある日、サイト開設当初から借りていたレンタルサーバのコントロールパネルで負荷を確認したら上限をはるかに超える負荷を記録していまして、このままだとアカウント停止になりそうな勢いだったので早々に移転しました。負荷率にして100倍ぐらいまでは耐えられるサーバにしたのでしばらくは大丈夫そうです。
Wordpressのサーバ移転はそれほど難しいことは無かったですが、独自ドメインを使用していなかったらもっと面倒だったと思うので独自ドメインの使用を推奨します。

まとめ
一番効果があったのが「wp-cron.phpの停止」でした。アクセスの度に実行されていたのが1時間に1度になったのでそれだけでもだいぶ違いがあるようです。次に「DB Cache Reloaded Fix」だと思います。これは体感的に早くなっているので一定の効果はありそうです。ただ、キャッシュ系のプラグインは使い方を誤ると逆に重くなるので要経過観察といったところです。