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

PHPは、さまざまなシステムで利用されている基盤となるWebアプリケーションに特化されたプログラミング言語。その動的ページ生成に適した構造から、DBとの関わりによってファイルアクセスが多くなる傾向も事実。その処理軽減をすべく、高速化を実現するのがZend Performance Suiteだ。実測値で見る同製品の効果を見ていく。

» 2004年07月06日 13時29分 公開
[照井進吾,ITmedia]

高速化の要はDBMSとファイル入出力の負荷軽減にある

 PHP言語(スクリプト)には、処理速度を改善するためのアプローチが幾つか用意されている。

 無償で入手可能な「Zend Optimizer」やその競合製品は、PHPスクリプトのコンパイルを最適化する、という方法で高速化を実現しているものだ。一見地味なアプローチではあるが、導入前と比べ、最大で約5倍程度の高速化を見込むことができる。また、スクリプトの暗号化を行う「Zend Encoder」を使い、事前にコンパイルしておくことで、実行時のコンパイル処理そのものを省略してしまうというアプローチも存在する。しかし、これらのアプローチは、あくまでもスクリプト言語のウィークポイントを補うだけに過ぎず、予測される以上の過度な期待はできない。

 実は、Webアプリケーションのパフォーマンス改善のポイントは、DBMSとの通信やファイル操作などの入出力(I/O)負荷軽減にある。訪問者数が多くリアルタイム性の低いコンテンツであり、ページ内容にまったく変化が無い場合でも、DBMSやファイルにアクセスが発生する。この無駄といえる処理がパフォーマンスを著しく低下させている要因だ。この結果、ページビューが増えれるほどサーバ負荷は累積的に増え、やがてサービスを維持できない状況に陥ってしまう。

 ここで紹介する「Zend Performance Suite」は、このような問題点を改善することに主眼を置いたソフトウェアである。価格は、Linux/FreeBSD版が1CPUの31万円〜、SPARC(Solaris版)は1CPUの50万円〜となっている。

Zend Performance Suite の特徴

 まず最初にZend Performance Suiteが実現する機能を挙げ、なぜ高速化が可能かを探ってみよう。

1. PHP スクリプトのコンパイル結果をキャッシュ

 いちどコンパイルしたPHPスクリプトは、スクリプトが修正されるまでコンパイル結果をキャッシュする。

2. コンテンツのキャッシュ

 PHPスクリプト単位で実行結果(コンテンツ)をキャッシュする。キャッシュには、条件を定義することができる。

3. コンテンツの部分キャッシュ

 API関数を用いて、Zend Performance Suiteの機能を制御できる。スクリプトの実行結果だけでなく、コンテンツの一部だけをキャッシュすることも可能だ。

4. コンテンツの圧縮

 コンテンツをキャッシュする際、内容を圧縮してキャッシュすることができる。Webブラウザがgzip圧縮対応であれば、すでに圧縮済みのデータをそのままブラウザへと送信することができる。

実際にパフォーマンスを計測する

 Zend Performance Suiteを導入することでどのような効果があるのかを探るため、サンプルスクリプトを作成して効果測定を行ってみた。今回のテストで使用したPCスペックは以下の通り。比較的古いスペックなのは、性能差をはっきりさせるためである。

  • ハードウェア環境:

CPU:VIA C3/800MHz

RAM:PC133 SDR-SDRAM 512MB

HDD:40GB/7200rpm/2MBキャッシュ

LAN:100Mbps

OS:Red Hat Linux 9

  • ソフトウェア環境:

Apache 1.3.31

PHP 4.3.7

Zend Optimizer 2.1.1(日本語版)

Zend Performance Suite 3.6.0(日本語版)

 テスト用に作成したスクリプト(サンプル1)は、www.php.netの新着記事情報(RSS)を取得して、Webブラウザにその内容を表示するというものだ。なお、表示を行う際、記事の叙述に含まれる「PHP」または「PHP」+バージョン番号を強調表示するようにしている。

 新着記事情報は能動的に取得する必要があるため、その内容に変化が無い場合でも通信に要するロスタイムが発生する。さらに、新着記事情報が変化しない限りは、Webブラウザ上に表示される内容もまったく変化しない。このようなケースでは、Zend Performance Suiteが効果的に機能することを、「ab」(Apache Bench)を用いて実証してみよう。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ