WordPressのDB(MySQL)負荷を劇的に下げるプラグイン『DB Cache Reloaded Fix』の使い方と設定、効果検証(Munin)付きを紹介します。結果として効果てきめんでした。
『DB Cache Reloaded Fix』の説明の前提として、WordPressは一般的にPHPというプログラミング言語でHTMLの生成やサーバの管理をし、ApacheというWebサーバ、MySQLというデータベース(DB)で動いています。これらは主にLinuxというOSのサーバで動かすことが多い(属にいうLAMP環境ってやつ)です。
サイトやWebサービスの記事やプラグインの情報はMySQLというデータベース(DB)に格納され、ユーザがアクセスしたときにそのデータベース(DB)からデータを取り出してサイトに表示するという仕組みです。
サイト、Webサービスの負荷が高いというのは、アクセスが増えるなどして、サイト側から処理して欲しいタスクがLinuxが処理しきれなくなっている、サーバに繋がっている回線がいっぱいいっぱいになっている状態などで起こります。
WordPressは特にPHPというプログラミング言語であることや、プラグインなどが簡単に入れることができるので、MySQLへのタスク依頼(クエリ)が多くなり、MySQLの負荷が高いです。便利さの代償なので仕方ないですが・・・。
「DB Cache Reloaded Fix」の導入経緯
WordPressで運営している800万PV/月程度のWebサービスのアクセス数が伸び、ピーク時に処理が追いつかずにサーバの負荷(load average)が上がり、アクセスできない状況になってしまうという事象が発生していました。
該当サーバとサービスの簡単なスペック
- CPU: 8vCPU (8コアってやつ)
- メモリ: 32GB
- OS: CentOS 64bit
- アクセス数: 800万PV/月程度
- WordPressバージョン: WordPress 3.4.1
- WordPressテーマ: twenty eleven(結構いじってます)
- 使用しているプラグイン数: 40
PHPやApacheの設定はキャッシュ量を増やしてるだけで、細かい設定はしていません。負荷を見ていると、ある一定のところから急にサーバが暴走しちゃうようですが、CPU負荷もメモリも余裕がある状態でした。
「DB Cache Reloaded Fix」導入の目的
WordPressのサイトが落ちる原因をMySQL負荷だと仮定し、MySQLの負荷を下げるために「DB Cache Reloaded」を導入しました。
WordPressでサーバ負荷を下げる、表示速度を上げるプラグインは「w3 total cache」や「WP Super Cache」などがありますが、キャッシュ系のプラグインは他のプラグインとの相性があったり、設定がややこしかったりするのと、MySQL負荷が原因かを探るために今回は「DB Cache Reloaded Fix」を導入しています。
WordPressのプラグイン「DB Cache Reloaded Fix」の設定と使い方
「DB Cache Reloaded Fix」の設定と使い方は簡単です。
まずは、「DB Cache Reloaded Fix」のダウンロードとインストール、有効化します。
「DB Cache Reloaded Fix」のダウンロードはこちらから。
WordPress › DB Cache Reloaded Fix « WordPress Plugins
有効化すると、プラグインの設定に「DB Cache Reloaded」という項目ができているので、クリックするとこんな管理画面になります。
最上部の有効というチェックボックスにチェックを入れて、必要に応じて「キャッシュの有効期限」を変更し(本サイトは30分にしました)、最下部の保存をクリック。
これで終了です。簡単ですね。。。
「DB Cache Reloaded Fix」も若干他のプラグインとの相性があるそうなので、事前のバックアップをオススメします。
WordPressのプラグイン「DB Cache Reloaded Fix」の効果検証(Munin)
結果は大成功です。
上記はMuninというサーバ監視ツールのMySQLクエリの画面です。秒間にどれくらいのクエリ(仕事依頼)があったのかが時系列で棒グラフで閲覧できます。
wed 00:00あたりにグラフが切れているのは、負荷が高すぎて落ちてしまったから測定できなくなっていた状態です。当時、GoogleAnalyticsのリアルタイムを見ているとその時点でサイトにアクセスしている人は830人くらい。WordPressのMySQLへのクエリ数は秒間1000クエリくらいいっちゃうんですね。。
Wed 12:00の前あたりに「DB Cache Reloaded」をインストールしました。グラフがガクンと落ちているのがわかります。
ほかの時系列でも確認するとこんな感じ。アクセス数はそんなに変わっていませんが、見事にクエリ数が落ちています。
ざっくりと半分くらいですかね。
実はload average(負荷)自体はそこまで落ちていないのですが、暴走することがなくなりました。
デメリットとしては、表示速度が若干落ちた気がします。安定性は上がったのですが。。
ちなみに本プラグイン「DB Cache Reloaded」を入れると、ページのHTMLソースに以下のようなキャッシュされたクエリの情報がフッターあたりに差し込まれ、確認できます。
<!-- Generated in 1.113 seconds. Made 15 queries to database and 34 cached queries. Memory used - 5.22MB --> <!-- Cached by DB Cache Reloaded Fix -->
サイトを閲覧してブラウザから「ページのソースを表示」とかで見れますね。
「DB Cache Reloaded Fix」の感想
「DB Cache Reloaded」は簡単に導入できてWordPressのボトルネックの一つであるMySQL負荷を低減させることができるので良いですね。
ネット上の情報では、表示速度が上がったとか、管理画面を表示しやすくなったという意見もありますが、正直、サイトのアクセスがそこまで高くないサイトの必要性は???です。
高アクセスのサイトでは表示速度も重要ですが、安定してサイトを表示することが大切になるので、「DB Cache Reloaded」は良いですね。