行った4つのテストケースは次の通りだ。
PHPのみ
PHP+Zend Optimizer
PHP+Zend Optimizer+Zend Performance Suite(コンテンツキャッシュの条件に合致しないパターン)
PHP+Zend Optimizer+Zend Performance Suite(コンテンツキャッシュの条件に合致するパターン)
Zend Performance Suite は、index.php をキャッシュ対象とし(画面1)、キャッシュ条件をクエリに「cache=on」が存在する場合のみとした(画面2)。サンプルスクリプトの実行結果は、キャッシュの有無に関係なく、画面3のように表示される。
効果測定は、次のコマンドで実施した。
> ab -n 100 -c 10 -w "http//foobar.com/index.php?cache=on" または、 > ab -n 100 -c 10 -w "http//foobar.com/index.php?cache=off" |
本来であれば、もっと大量にリクエストを行うべきなのだが、www.php.netに対して大量なアクセスを行うことは迷惑を掛けてしまうため、アクセス数を少なめに設定している。
テスト結果は、次に挙げる表の通りである。
|
見て分かるようにケース1が最も遅く、ケース4が最も速いという結果になった。これは、筆者がケースを作成する際に想像していた結果とまったく同じであった。注目すべき点として、ケース2とケース3の間に違いがあるのは、Zend Performance Suiteに共有メモリ上のコンパイルされたPHPスクリプトのオペコードをキャッシュする機能が搭載されているためだ。
Zend Performance Suiteは、I/Oなどのボトルネックが存在するスクリプトに対し、特に効果を発揮する。サンプルスクリプトではほかのWebサーバから情報を取得する処理でタイムロスが発生するが、DBMSに複雑なクエリを要求するWebページにコンテンツキャッシュを適用するのもかなり効果が期待できるだろう。
表中の処理時間を見れば分かる通り、少ないアクセス数であっても明らかにZend Performance Suiteが処理を軽減しているのが分かる。この結果からもZend Performance Suiteを活用するということは、コンテンツキャッシュを適切に利用することと言えよう。
Zend OptimizerやAPC(Alternative PHP Cache)などの無償で入手できる高速化ツールとZend Performance Suiteとを比較しているケースをよく見掛けるが、これは大きな間違いである。前者は実行速度だけを重視するのに対し、後者はスクリプトの実行自体を省略することでサーバに対する負荷軽減を実現する、という特性も持っているためだ。
Zend Performance Suiteの導入事例のひとつに、利用者数が国内でも上位に入るBlogサイトがある。導入前までは、アクセスが集中する時間帯になるとDBMSに負荷が掛かりレスポンスが悪くなるという現象が発生していた。しかし導入後は、DBMSの負荷が激減し、現在では安定したサービスを提供している。パフォーマンス改善のカギは、スクリプトの処理時間という小さな基準から、コンテンツという基準へと変わり始めているのだ。
今回は、Zend Performance Suiteのメリットを中心に紹介してきたが、すべてのサイトで高い効果を得れるとは限らない点にも注意が必要だ。以下に、高い効果が得られるサイトと、あまり効果が得られないサイトの特徴を挙げておく。
A. 高い効果が得られるケース
B. 比較的効果が得られないケース
上記「A」のケースに当てはまるのであれば、十分な効果が期待できるだろう。また、「B」のケースであっても回避策はあり、リアルタイム性を重要視しないと割り切り、一定間隔のキャッシュを行うという選択肢もある。このように、Zend Performance Suiteの真価を引き出すためにはテクニックが必要なのも事実だ。導入検討をしたいのであれば、ゼンド・オープンソースシステムズ( info@zend.co.jp )が相談を受け付けている。手持ちのサーバでもハードウェア増強を行わず、いま以上のパフォーマンスを得られる可能性がある。
Copyright © ITmedia, Inc. All Rights Reserved.