レビュー:PHPサイトを加速する「Zend Performance Suite」の実力:dev Linux(2/2 ページ)
PHPは、さまざまなシステムで利用されている基盤となるWebアプリケーションに特化されたプログラミング言語。その動的ページ生成に適した構造から、DBとの関わりによってファイルアクセスが多くなる傾向も事実。その処理軽減をすべく、高速化を実現するのがZend Performance Suiteだ。実測値で見る同製品の効果を見ていく。
テスト結果で分かる導入効果
行った4つのテストケースは次の通りだ。
- ケース1
PHPのみ
- ケース2
PHP+Zend Optimizer
- ケース3
PHP+Zend Optimizer+Zend Performance Suite(コンテンツキャッシュの条件に合致しないパターン)
- ケース4
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 Performance Suiteはスクリプト実行自体の処理を軽減する
Zend OptimizerやAPC(Alternative PHP Cache)などの無償で入手できる高速化ツールとZend Performance Suiteとを比較しているケースをよく見掛けるが、これは大きな間違いである。前者は実行速度だけを重視するのに対し、後者はスクリプトの実行自体を省略することでサーバに対する負荷軽減を実現する、という特性も持っているためだ。
Zend Performance Suiteの導入事例のひとつに、利用者数が国内でも上位に入るBlogサイトがある。導入前までは、アクセスが集中する時間帯になるとDBMSに負荷が掛かりレスポンスが悪くなるという現象が発生していた。しかし導入後は、DBMSの負荷が激減し、現在では安定したサービスを提供している。パフォーマンス改善のカギは、スクリプトの処理時間という小さな基準から、コンテンツという基準へと変わり始めているのだ。
導入効果はサイト特性で左右する
今回は、Zend Performance Suiteのメリットを中心に紹介してきたが、すべてのサイトで高い効果を得れるとは限らない点にも注意が必要だ。以下に、高い効果が得られるサイトと、あまり効果が得られないサイトの特徴を挙げておく。
A. 高い効果が得られるケース
- 「同一内容を不特定多数のユーザが閲覧するコンテンツ」→ニュースサイトなど、ページ内容そのものをキャッシュする。
- 「更新頻度が低い動的な情報を使ったコンテンツ」→DBやWebサービスから取得した情報自体をキャッシュする。
B. 比較的効果が得られないケース
- 「更新間隔が短いコンテンツ」→掲示板やpingサーバなど。
上記「A」のケースに当てはまるのであれば、十分な効果が期待できるだろう。また、「B」のケースであっても回避策はあり、リアルタイム性を重要視しないと割り切り、一定間隔のキャッシュを行うという選択肢もある。このように、Zend Performance Suiteの真価を引き出すためにはテクニックが必要なのも事実だ。導入検討をしたいのであれば、ゼンド・オープンソースシステムズ( info@zend.co.jp )が相談を受け付けている。手持ちのサーバでもハードウェア増強を行わず、いま以上のパフォーマンスを得られる可能性がある。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
関連記事
- ゼンド、Webサイトの高速化ツールを販売開始
- 特集:第4回 PHP 4からPHP 5への移行
- 特集:第3回 PHP 5に標準バンドルされた機能
- 特集:第2回 Zend Engine 2
- 特集:第1回 実践! 最新PHP 5 全3回「WebプログラミングPHP言語入門」
- 特集:第3回 PHPを思うままに操れるようになる「MVC」と「Smarty」
- 特集:第2回 ショッピングカートの作成で分かる「PHP」の力
- 特集:第1回 今から始めるWebプログラミング言語は「PHP」だ
- レビュー:リモートデバッグを実現するPHP開発ソフトZend Studio 2.6
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.