以前、WordPressが重いときの対策方法について覚え書きを書きましたが、その後です。以前の記事はこちら。
・WordPressが重いときの対策方法
その後、キャッシュの導入で劇的に改善されたのですが、しばらく動かしていると妙に重くなってくることがありました。調べてみると、Apacheのプロセスが増えると重くなるということのようです。当たり前ですが、プロセスが増えれば、メモリが足りなくなる。そして、DBアクセスもボトルネックになっているようです。
Apacheの設定を変更してみたり、MySQLの設定を変更してみたりしたのですが、あまり効果は現れませんでした。
仕方ないかなと思っていたのですが、次のようにしたら劇的に改善されました。
対策1 : iPhone専用ページの生成プラグインをあきらめる
WordPressのプラグインでiPhoneから接続されたときにiPhoneに最適化した専用ページを表示するというプラグインがあります。便利なのですが、これを使うと、キャッシュのプラグインで「モバイル用」の機能をオンにして、キャッシュ対象からiPhoneからの接続時を外す必要があります。
iPhoneからのアクセスが多いとApacheのプロセスが増えすぎてしまい、どうにもならなくなっていました。そのため、iPhone専用ページをあきらめて、キャッシュのモバイル機器サポートをオフにしました。
iPhoneから接続していただいている方には申し訳ないのですが、ご了承ください。
(複数サイト運用にして、サブディレクトリなどでモバイル機器専用サイトを作ってしまうのも一つの方法かなとも思います)
対策2 : botやクローラからのアクセスもキャッシュ対象にしてしまう
WP Super Cacheですが、キャッシュを使用しないユーザーエージェントを指定できますが、デフォルト状態で、iPhoneとiPod touch、各種ボット、各種クローラが設定されていました。クローラなどに常に最新の情報が渡るようにと、これらのリクエストによってキャッシュが作られないようにということだと思うのですが、これを全て削除して、常にキャッシュ作成&使用にしてみました。
悪影響が出るかどうかはしばらく様子見です。
* 二週間ほど経ちましたが、Google検索結果への反映が以前よりも遅くなったような感じですが、他にも問題が起きていません。
対策3 : テーマにかけるものはテーマに書く
プラグインで色々できてしまうのがWordPressの魅力ですが、重くなりがちな要素でもあります。テーマに書いても実現できるものは、プラグインよりもテーマに直接書いてしまった方が良いと思います。
対策4 : キャッシュの有効期限を調整
サイトによって異なると思いますが、キャッシュの有効期限を調整するのも効果的だと思います。例えば、更新が激しくないサイトなら、有効期限を1時間や2時間にしてしまっても良いと思います。
対策5 : Zenbackを導入してみる
関連記事を自動的に表示したいときに、WordPressのプラグインを使うと思いますが、これをいっそのこと外部サービスにしてしまうと、サーバの負荷が軽くなります。このサイトの場合は、Zenbackを導入してみました。ZenbackはJava Scriptベースですし、非同期で提供元のサーバと通信するので記事の表示が重くなりません。
また、他の関連サイトと自動的にリンクされたり、他のサイトからのリンクも期待できるなど結構お得です。はてなやTwitter、Facebookのいいね、などのソーシャル系のサービスとも連携できます。詳しくはこちら。
・Zenback
ちなみに関連記事の精度ですが、良いと思います。しかし、確実にリンクしてほしい記事とかは、記事の中で直接書きましょう。
最後に
色々設定した後、一度、MySQLとApacheを再起動することをお勧めします。なるべくアクセスが少ない深夜などに行いましょう。