[0] memcached+Zend_Cacheによるキャッシュ効果実験-[Id of Radiance ver.5]





■ memcached+Zend_Cacheによるキャッシュ効果実験

 Webアプリ高速化の手法として良く見かけるようになったmemcached。標準状態のCentOSだとrpm、yumとかで入らないのでこれまで放置してきたが、今回システム入れ替えに伴い、自前で共有メモリを使って処理してた部分をmemcached+Zend_Cacheで置き換えようと考えた。

 それほどメモリが潤沢にあるサーバでもないんで(なんせCF-R3なので)キャッシュにおける情報はそれほど多くはない中で、キャッシュに入れる情報を吟味する必要がある。もちろんブログのように本来DBから読みだされてテンプレートを経由して表示、されるようなデータをキャッシュしとくのが効率的なのでそれも追々検討予定なのだが、取り急ぎ効果を確認したかったのがZend_Config_Iniで取り込まれるいわゆるINI形式ファイル。
 INI形式で取り込まれる定数系のデータは、基本的にそう頻繁には変更されず、一方でシステム全体に絡む設定が多いのでアクセスの度に読み込まれるものが多い。これをメモリキャッシュに置くことでどれくらい高速化されるのかを検証してみた。

 試験用として60個くらいの定数を持つINIファイルを作成。キーで6~7個くらいに分化されている。これをZend_Config_Iniで取り込みtoArrayで配列化したものをキャッシュに置いた状態をスタートとし、キャッシュの読み込み10000回にかかった時間と、ふつうにZend_Config_Iniで10000回取り込みにかかった時間を比較してみた。
 なおINIファイルの置き場所はSSDなので、HDDに置かれるよりかは高速に読みだされているものと思われる。

 結果。
   キャッシュ読み:1.63秒
   INI読み:9.17秒

 まあ当たり前だけど結構な差が付いた。頻繁に読まれるファイルだけに効果は大きそう。INIに入ってるデータってそんなに多くもないから(少なくともウチのシステムでは)メモリ的にもそんなに圧迫しないだろうし。とりあえずその方向で調整してみよう。

 あとはトップページや、アクセスランキングで上位に来る情報を優先的にキャッシュするよーにすれば結構高速化できそうな感じ。

関連タグ:PHPZendFramework
2011-01-24 [技術・作業]

関連記事: