Zend Serverの機能
はじめに、Zend Server 6.1の実装機能を解説します。いずれもオリジナリティあふれるパワフルな機能です(注意:本記事は、執筆当時の状況です。記載のバージョンおよび機能は変更されることがあります)。
Ver 6.1で使える主なコンポーネント
Zend Server Ver 6.1の機能は、コンポーネントとして実装され、PHPコミュニティおよびLinuxデストリビューションから入手できるPHPを大幅に機能拡張します。
コンポーネント名 (機能名) |
提供機能 |
---|---|
Zend Code Tracing
(コードトレーシング)
|
PHPスクリプトの実行状況をリアルタイムに記録 |
Zend Data Cache
(データキャッシュ)
|
さまざまなキャッシュ目的に使用できるAPI
|
Zend Debugger | デバッグ、プロファイリングおよびコードカバレッジに利用 |
Zend Deployment
(デプロイ)
|
アプリケーションを管理 |
Zend Guard Loader | Zend GuardでエンコードされたPHPスクリプトを実行 |
Zend Java Bridge
(Javaブリッジ)
|
PHPスクリプトから呼び出すJava VMを1つに統合 |
Zend Job Queue
(ジョブキュー)
|
PHPスクリプトを定期的に、または画面表示と非同期に実行 |
Zend Monitor
(モニター)
|
アプリケーションの品質を改善するための情報を収集 |
Zend Optimizer+
(コードキャッシュ)
|
オペコードをキャッシングおよび最適化 |
Zend Page Cache
(ページキャッシュ)
|
PHPスクリプトのHTML出力全体をキャッシュ |
Zend Statistics | アプリケーションおよびサーバのパフォーマンス情報を収集 |
Free Editionでは、これらの機能のうち、グレーになっている機能が使用できません。しかし、その他の機能は無償で利用できます。本稿では、これらの無償で利用できる機能をWebアプリケーションの開発や運用に活用する方法を解説します。
コードキャッシュとデータキャッシュ
PHP 5.5にコードキャッシュ機能が統合されました。相当する機能をZend ServerではPHP 5.2から実装しており、PHPのコンパイルをしなくても利用できます。この機能により、PHPスクリプトを実行する際の時間が3割前後省略できます。
さらに、データキャッシュ機能では、任意のデータをキャッシュして再利用するためのAPI関数が用意されています。例えばPHPスクリプトで生成したWebページのうち、内容が比較的変わりにくい部分をこのAPI関数を使用してキャッシュすると良いでしょう。
その結果、Webページ生成処理の一部をPHPスクリプト実行時に省略することができます。
デプロイ
1つのWebサーバに複数のアプリケーションを搭載することがあります。その場合、アプリケーションごとにアクセス負荷やイベントの監視条件を設定したいかもしれません。
そのような場合にデプロイ機能が便利です。この機能は、1つのWebサーバを仮想ディレクトリごとに分割したアプリケーションの集合体として管理できます。後述のモニタ機能のルールなど、多くの機能がアプリケーションと連携して動作します。
例えば、管理コンソールのグラフやイベントは、アプリケーションごとに表示を切り替えることができます。
モニタ
PHPにはエラーログが用意されています。しかし、実行の遅延やメモリ消費など「エラー」としては出力されないもの、およびエラーの発生を抑制した場合はエラーログに記録されません。また、トラブル発生時にエラーログを調査するのは大変な作業です。より広範囲の問題を簡単に取り扱うには、モニタ機能が便利です。
この機能では、問題を検出するためのルールを設定しておきます。ルールを超過した処理を検出すると、検出時の詳細な状況とともにイベントとして記録します。ルールは15種類用意されていて、アプリケーションからZend Serverの機能そのものまで監視することができます。
ルール名 | 概要 |
---|---|
Custom Event
|
管理者独自のイベント |
Database Error | データベース関数の処理結果 |
Failed Writing Code Tracing Data
|
コードトレース処理中エラー |
Function Error | 関数の処理結果 |
High Memory Usage | メモリ使用量の増大 |
Inconsistent Output Size | Webページ出力量の異常 |
Job Execution Delay | ジョブ実行遅延 |
Job Execution Error | ジョブ実行エラー |
Job Logical Failure | ジョブ論理エラー |
PHP Error | PHPのエラー |
Slow Function Execution | 関数実行遅延 |
Slow Query Execution | データベース処理実行遅延 |
Slow Request Exection | PHPコード実行遅延 |
Uncaught Java Exception | 例外発生 |
Zend Framework Exception | Zend Framework例外発生 |
コードトレーシング
モニタ機能がイベント検出時の状況を記録するのに対して、コードトレーシングは、該当のPHPスクリプトの実行状況、例えばステップごとの実行時間やメモリ使用量を詳細に記録します。メモリ消費の増大や時間を要する処理などのボトルネックを視覚的に把握することができます。
コードトレーシングを使用すれば、メモリ消費を調査するためのPHPコードを追加する必要がありません。