Code Tracing(コードトレース)
PHPアプリケーションの実行時間やメモリ使用が肥大化した場合、何が原因かPHPエラーログから推測することはできるでしょうか。まったく無理です。PHPエラーログには、そのような情報は記録されていません。それでは、一般的な運用監視によって、原因を見つけることができるでしょうか。PHPアプリケーションの実行時間やメモリ使用が肥大化の原因が、OSなどPHP実行環境以外であれば原因を予測できるかもしれません。しかし、まずできないでしょう。Zend Server 8 英語版に搭載されているCode Tracingなら可能です。
Code Tracingは、対象となるPHPコードの実行状況をステップbyステップで記録する機能です。そのため、実行時間やメモリ使用が肥大化をピンポイントで発見できます。
Tracing Tree表示は、対象となるPHPコードの実行状況を表します。実行時間順やメモリ使用量順にソートできます。プログラミングで最も注目される実行時間とメモリ使用を簡単に特定できます。
Statistics per Functionは、関数レベルで集計したものです。小さい処理でも繰り返し実行する処理であれば、パフォーマンスチューニングの対象になります。首尾よくパフォーマンスを改善できれば、その波及効果も多きものです。
Code Tracingは、2つの方法で採取することができます。1つ目は、Zend Server 8 管理画面のDebuggingのCode Tracingで明示的に実行する方法です。採取したい処理のURLを入力すると即座に採取します。2つ目は、Event発生時に自動的に採取する方法です。Eventは、PHPコードの実行時に発生した事象を記録する機能です。Code Tracingが採取した情報を解析することで、具体的な事情を把握することができます。
Code Tracingは、PHPコードの実行状況を記録して、原因ポイントの解析ができる機能です。つまり、旅客機に搭載されているフライトレコーダのような機能を提供します。
Z-Ray(APM機能)
最後に説明するのは、Zend Serverシリーズの最新機能Z-Rayです。まず、Z-Rayのネーミングからご紹介します。医療で体内を透視する際に使用するX線(X-Ray)が由来です。Z-Rayは、PHPを透視して、実行時間やメモリ使用量を把握しボトルネックを特定する高度な医療機器と同様の役割を提供することから名づけられました。
APM(Application Performance Management)とは、アプリケーションのパフォーマンスを監視/解析して、積極的に改善するための機能です。アプリケーションの開発/運用に不可欠な機能といえます。Zend Server シリーズでは、Z-Ray によって、手軽にWebページのパフォーマンスを解析できるようになりました。
Z-Rayツールバー
Zend Server 8 英語版にPHPアプリケーションを導入してアクセスすると、Webページの下に見慣れないバーが表示されます。これが、Z-Rayツールバーです。
画面下部のいくつかのアイコンと数値が表示されているこの部分がZ-Rayツールバーなのです。これらのアイコンは、クリックすると詳細情報がポップアップします。
Z-Rayでは、このページを作成する際にWebサーバ側で行っている処理を集約してZ-Rayツールバーに送信しています。
レスポンスタイム/容量をクリックすると、このWebページを作成するための実行されたPHPコードの実行時間とメモリ使用量がポップアップ表示されます。
データベースは、このページを生成するために実行したSQLステートメントと個々のステートメントの実行時間を確認できます。
さらにPHPコード内で呼び出した関数の内容も表示できます。もちろん、関数毎の呼び出し回数や実行時間も参照できます。
PluginによるPHPアプリケーションに特化した解析
PHPアプリケーションには、デファクトスタンダートとなるようなアプリケーションがいくつも存在します。このようなアプリケーションを利用する場合、ソースコードレベルの解析はあまり行いません。例えば、WordPressを使用する場合、ソースコードレベルの解析を行うことは稀です。それよりもWordPress独自の機能や仕組みに乗っとり、解析した方が効率的です。Zend Server 8 英語版では、アプリケーション別の解析機能をPluginといいます。
さまざまなPluginが提供されており、Zend Server 8 英語版のGalleryから無償で導入することができます。
WordPressのPluginも用意されています。Deploymentのデモとして提供しているWordPressを導入すると自動的にWordPressのPluginも導入されます。
WordPressでは、Dashboardを含めて7種類のアイコンを用意しています。これらのアイコンで、WordPress特有のパフォーマンス情報を得ることができます。
むすび
Zend Server 8 英語版は、評価期間中に本書が紹介した機能をすべて無償で利用できます。ぜひ、実際のPHPアプリケーションで活用してください。おそらく、次々と問題点を発見できると思います。問題のFixにもZend Server 8 英語版が活躍することでしょう。きっと、評価期間が終了する30日後には、見違えるほどのクオリティとパフォーマンスが備わったPHPアプリケーションになっていると思います。