Turck MMCacheのインストール

PHPの高速化とその効果

webサーバーにMMCacheをいれてみました、効果がありました
PHPを高速化するためのキャッシュツールは幾つかあります。いままではAPCを使っていました。しかしサーバーをwoodyからアップグレードしたsargeにはパッケージがなく、しばらくはキャッシュなしで運用していました。
最近調べてみるとsargeにTurck MMCacheがあることがわかりました。

apt-get install turck-mmcache でインストールすると /etc/php/apache/php.ini に自動的に設定が書き加えられますが、サーバーが貧弱なので設定を少し変更しました。

;The lines below were added by the Turck-MMCache install script. ; turck-mmcache
zend_extension="/**/*****/**/mmcache.so" ; turck-mmcache
mmcache.shm_size="1" ; turck-mmcache
mmcache.cache_dir="/***/*****/turck-mmcache" ; turck-mmcache
mmcache.enable="1" ; turck-mmcache
mmcache.optimizer="1" ; turck-mmcache
mmcache.check_mtime="1" ; turck-mmcache
mmcache.debug="0" ; turck-mmcache
mmcache.filter="" ; turck-mmcache
mmcache.shm_max="0" ; turck-mmcache
mmcache.shm_ttl="300" ; turck-mmcache
mmcache.shm_prune_period="600" ; turck-mmcache
mmcache.shm_only="0" ; turck-mmcache
mmcache.compress="1" ; turck-mmcache

設定の内容についてはこちらを参照してください。

ab -c 10 -n 100 でのベンチマークの結果
ページ1 (/uni/index.phpです。)
キャッシュ無し
Requests per second:    84.32 [#/sec] (mean)
Time per request:       118.60 [ms] (mean)
Time per request:       11.86 [ms] (mean, across all concurrent requests)
Transfer rate:          379.43 [Kbytes/sec] received

キャッシュ有り, mmcache.compress="0"
Requests per second:    104.17 [#/sec] (mean)
Time per request:       96.00 [ms] (mean)
Time per request:       9.60 [ms] (mean, across all concurrent requests)
Transfer rate:          468.75 [Kbytes/sec] received

キャッシュ有り, mmcache.compress="1"
Requests per second:    112.74 [#/sec] (mean)
Time per request:       88.70 [ms] (mean)
Time per request:       8.87 [ms] (mean, across all concurrent requests)
Transfer rate:          507.33 [Kbytes/sec] received

ページ2 (pukiwikiのページです)
キャッシュ無し
Requests per second:    1.10 [#/sec] (mean)
Time per request:       9092.40 [ms] (mean)
Time per request:       909.24 [ms] (mean, across all concurrent requests)
Transfer rate:          4.04 [Kbytes/sec] received

キャッシュ有り, mmcache.compress="0"
Requests per second:    2.29 [#/sec] (mean)
Time per request:       4365.20 [ms] (mean)
Time per request:       436.52 [ms] (mean, across all concurrent requests)
Transfer rate:          8.42 [Kbytes/sec] received

キャッシュ有り, mmcache.compress="1"
Requests per second:    2.26 [#/sec] (mean)
Time per request:       4434.40 [ms] (mean)
Time per request:       443.44 [ms] (mean, across all concurrent requests)
Transfer rate:          8.29 [Kbytes/sec] received

キャッシュ有り, mmcache.compress="1" mmcache.shm_size="16"
Requests per second:    2.58 [#/sec] (mean)
Time per request:       3876.90 [ms] (mean)
Time per request:       387.69 [ms] (mean, across all concurrent requests)
Transfer rate:          9.48 [Kbytes/sec] received

カウンタのような簡単なスクリプトでも2割増し、pukiwikiのように複雑なプログラムは倍以上の処理速度になります。
compressは今回のベンチマークでは誤差の範囲内ですがキャッシュされるページが多い場合は役立つのかも知れません。
キャッシュが1Mと16Mで差は10%程度でした。サーバーのメモリーと相談して決めれば良いと思います。Linuxでは余ったメモリーはディスクキャッシュに利用されるのでサーバーのメモリーが少ないこととトータルのパフォーマンスを考えて1Mにしておきました。

戻る
コメント・訂正がありましたらc-yun@kids-clinic.jpまで