S.F. Page

Programming,Music,etc...

nginxによるWordpressコンテンツのキャッシュ

nginxのキャッシュが動作するようになった。

nginxの設定をいじってようやく動作するようになった。設定については下記サイトを参考にした。設定についてはまだまだ分からないところがある。やっぱりどのディレクティブが今適用されているかとか、ディレクティブの適用順とかが難しい。

そんな状態での設定であるが、キャッシュの効果は絶大である。下のグラフを見てほしい。

グラフはこのブログのTOPページをabツールを使ってパフォーマンス計測し、gnuplotを使って描画したものである。abツールのコマンドラインは下記のとおりである。

H:\xampp\apache\bin>ab -k -c 10 -n 100 -v 1 -g h:(gnuplotデータファイル名) http://webserver/blog/ > h:\tmp\webperf\n_n_r.txt

青色の線がキャッシュした場合のパフォーマンスなのであるが、値が小さすぎてほとんど0あたりでちょろちょろしている感じである。おそらく何もしない場合と比べて200倍くらい速くなっている。キャッシュ部分のみに着目して描いたグラフは下である。だいたい200ms以下のレスポンスとなっている。

驚異的なスピードとなっている。やっぱりphpの処理結果をキャッシュしているが大きい。動的Webページ生成というのは重いんですな。。

GTMetrixの結果

GTMetrixで計測してみるとかなり改善されている。リクエストした後の待ち時間(Waiting)が100ms程度に抑えられている。

ちなみに改善前の結果が下の図である。リクエストした後の待ち時間(Waiting)が長い(2秒以上)ことがわかる。この時間はPHPによる動的Web生成に大部分が費やされるているのだろう。キャッシュで改善されたものの、まだPHPやWordpress自体のチューニングの余地があるかもしれない。秒単位の処理時間はいくらなんでも遅すぎるような気がする。

Nginx Cache Controllerの導入

さらにWordpressにはNginx Cache Controllerを導入して、投稿やコメントに合わせてキャッシュを削除するようにしてみた。

しばらくはこの状態で様子をみることにしよう。

APCのチューニング

nginxのエラーログを見ると下記のエントリを発見。

2013/08/14 06:16:56 [error] 32633#0: *536 FastCGI sent in stderr: "PHP message:
PHP Warning:  require_once(): Unable to allocate memory for pool. in /var/www/wo
rdpress/wp-content/plugins/wp-dtree-30/wp-dtree.php on line 62" while reading re
sponse header from upstream, client: unix:A     , server: , request: "GET /blog/
2010/04/roland-mc-8-factory-demo-program-bach-invention-1/ HTTP/1.0", upstream:
"fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "www.sfpgmr.net"

何やらメモリ不足のようである。ググるとこのページに対応方法が書いてあった。APCのメモリは16MBに設定していたけれどもそれでは足りないようだ。24MBに増やしてapc.phpでチェックしたところとりあえず足りていそうである。