レビュー:PHPサイトを加速する「Zend Performance Suite」の実力dev Linux(2/2 ページ)

» 2004年07月06日 13時29分 公開
[照井進吾,ITmedia]
前のページへ 1|2       

テスト結果で分かる導入効果

 行った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のように表示される。

画面1■
画面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

ケース2

ケース3

ケース4

リクエスト回数[秒]
30.57

31.90

32.11

33.17

転送レート[KB/秒]
13.91

14.51

14.76

15.09

接続時間

[m秒]

min.
133

133

133

133

max
140

147

139

145

avg
135

136

135

136

処理時間

[m秒]

min.
138

138

138

139

max
427

1318

206

364

avg
181

163

152

148

 見て分かるようにケース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 )が相談を受け付けている。手持ちのサーバでもハードウェア増強を行わず、いま以上のパフォーマンスを得られる可能性がある。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ