wordpress チューニング (4) php編

前回、php-fpmということでサーバプロセスを中心に見てみたが、今回はphpそのものについてのチューニングを考える。今更だけど、phpは仕事で扱った事ないので基本的には門外漢。適当にぐぐってみたところ、opcacheという機能によるチューニングが筋よさそう。opcacheはphp5.5から使えるようなので、現在のphp5.4を一旦消し去って、remiリポジトリからopcacheも加えた形でphp5.5を入れ直す。

yum remove -y php php-mbstring php-mysql php-fpm php-gd php-common
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install -y --enablerepo=remi55 php php-mbstring php-mysql php-fpm php-gd php-opcache php-common

とりあえず設定はデフォルトのままで、opcacheありの性能検証をしてみた。現時点で600msec前後のトップページ表示が400msec前後まで改善した。実は自宅環境で先行して性能評価していたので、この結果はほぼ期待値通り。あとはopcacheの最適動作のための設定値を検討していく。opcacheはその名の通りcacheの仕組みを持っているので、考慮するポイントは以下2つ。

  • キャッシュサイズ(opcache.memory_consumption)
  • 更新インターバル(opcache.revalidate_freq)

デフォルトでキャッシュサイズは128MBなのだが、当然そんな贅沢は許されないw半分に減らしつつ負荷試験を繰り返し、性能に影響する分岐点を探っていく。結果として32MBを16MBに減らしたところで、スループットが落ちてしまったので、性能的に問題なかったキャッシュサイズ32MBでいくことにした。

更新インターバルは長ければ長いほど、本来の負荷を緩和できるはずだが、その代わりに更新内容の反映が遅延するので、その辺りのバランスが大事。性能影響が出ない範囲で短くしておくのが望ましいので、こちらについてもデフォルト値の60秒を徐々に短縮させつつ負荷試験を繰り返していく。結局1秒でも性能影響なかったので、更新インターバルは1秒にしてしまった。

vi /etc/php.d/opcache.ini
---
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=32
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=1
opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
opcache.fast_shutdown=1

これでメモリの膨張もキャッシュによる反映遅延も最低限に抑えた形で、ページ表示の高速化が実現できた。今回の対応でトップページの表示速度は600msec前後から400msec前後に改善した。いつまで続けるんだろうと思いつつ、もう少しだけ次回へ続く。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)