第3章 Zend Server 8 注目機能の活用
Zend Server 8 英語版が動作したところで、PHPアプリケーション開発に最適な機能を詳しく紹介します。本章の内容を参考にデバッグやパフォーマンスチューニングにご活用ください。
Deployment(デプロイ)
Deploymentは、PHPアプリケーションをパッケージのようにインストールしやすくするための仕組みです。また、Deploymentは、PHPアプリケーションを管理するための機能です。PHPアプリケーションを管理するためのコンテナのような概念です。PHPコードは、ファイルシステムのディレクトリ構造で管理しやすいように分けます。これらは、URLの表記から見れば、階層構造に分けられています。PHP実行環境から見ると格納場所が異なるだけで、すべて同一のレベルなのです。1つのWebサーバにいくつかのPHPアプリケーションが混在して配置された場合、重要性や用途によって分けて管理したいものです。Deploymentは、PHPアプリケーションごとの監視を実現します。
PHPアプリケーション登録(Deployment以外の登録方法)
Zend Server 8 英語版では、Deployment以外の方法でもPHPアプリケーションを登録できます。登録すると後述のMonitoringの対象として、Event Ruleによって詳細な監視が可能になります。
PHPアプリケーションの登録方法は、非常にシンプルです。PHPアプリケーションが格納されているPathを指定するのみです。
Zend Demo App(サンプルPHPアプリケーション)の導入
Zend Server 8 英語版のLinux環境では、Deploymentのデモとして「Zend Demo App」とMagento(EC)、Drupal(CMS)、WordPress(CMS)、Joomla!(CMS)、phpMyAdmin(MySQL管理ユーティリティ)、phpBB(電子掲示板)がサンプルとして導入可能です。事前にMySQLまたはMariaDBをインストールしておけば驚くほど簡単に導入できます。Deployment は、Deploy Applicationダイアログボックスを通じて導入を行います。
「Zend Demo App」を実際にDeploymentで導入します。「Zend Demo App」は、Zend Server 8 英語版の機能紹介をするためのダミーアクセスやイベントを発生させます。
まずは、[DEPLOY NOW]ボタンをクリックします。Deploymentによる「Zend Demo App」の導入がスタートします。
Deploymentは、PHPアプリケーションのDeployment(インストール)手順を7ステップに定めています。
ステップ | 概要 | 操作概要 |
---|---|---|
Application Download | ダウンロード | 表示のみ |
Readme | リードミー | 参照 |
Application Details | 詳細設定 | 詳細設定を入力 |
License Agreement | 使用権許諾契約 | 確認 |
Prerequisites Validation | 前提環境有効化 | 確認 |
User Parameters | ユーザパラメータ | パラメータを入力 |
Deployment Summary | サマリー | 確認 |
不要なステップは、グレイアウトしています。PHPアプリケーションには、インストーラがないものも多く、Deploymentが普及すれば導入も手軽になります。
Application Downloadは、ダウンロード過程をプログレスバーで表示します。「Zend Demo App」は、ReadmeはないのでApplication Details(詳細設定)からスタートします。
アプリケーションの詳細設定は、管理上のアプリ名、インストール対象のサーバ、URL上のPathを入力します。複数のWebアプリケーションを導入する場合、URL上のPathで管理するので、2回目以降のDeploymentならPath指定が必須です。
最初のDeploymentなら、変更の必要がないので、そのまま[Next]ボタンをクリックします。
Prerequisites Validationでは、「Zend Demo App」に必要なpdo_mysqlとZend Frameworkを自動的に導入します。
最後にDeployment Summaryを確認して、Deploymentが完了します。
Deploymentが完了すると、Manage AppsページにDeploymentしたPHPアプリケーションが表示されます。
「Zend Demo App」は、Zend Server 8 英語版の機能紹介をするための、仮想のPHPアプリケーションです。さらにダミーのアクセスを生成して、架空の運用状況を創造します。
「Zend Demo App」が生成した架空の運用情報を使用して、そのほかの機能を説明します。
Monitoring(モニタ)/Event Rule(イベントルール)/Event(イベント)
一般的にWebサーバの監視は、ハードウエアやOSのロードアベレージを監視するものです。Monitoringは、PHPコードの実行状況を監視するための特別な機能です。
もちろん、Webサーバの各種ロードアベレージを監視することは無駄ではありません。しかし、PHPアプリケーションの監視であれば、PHPコードの実行状況が最も重要な情報です。これに異常があれば、ロードアベレージに関係なく異常なのです。逆にPHPコードの状況に問題がなければ、多少のロードアベレージ異常などは問題ありません。
Monitoringの概要と設定内容
Monitoringは、PHPの実行状況を常時Event Ruleと比較して、異常があればEventとして記録する機能です。Event Ruleは、Global RuleとDeploymentしたアプリごとの2階層になっています。
Event Ruleには、12タイプのEvent検出項目が用意されています。最もポピュラーなのが、Slow Request Execution(PHPコード実行遅延)です。PHPコードの実行時間が設定値を超えるとEventを生成します。
タイプ | 概要 |
---|---|
Custom Event | 管理者独自のイベント |
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 Request Execution | PHPコード実行遅延 |
Uncaught Java Exception | Java例外発生 |
Event Ruleには、Notice/Warning/Criticalの3段階の値を設定できます。段階的に設置値と対応方法を変更できます。
対処方法には、Eventを発生(記録)する、メールを送信する、URLへ通知する、実行状況のCode Traceを採取する、4種類を組み合わせられます。実際の設定画面をご覧いただくと分かりやすいと思います。
Monitoringは、Event Ruleに基づいてPHPコードの実行を監視します。Event Ruleを逸脱するPHPコードの実行を検出するとEventを作成します。関係を図にすると次のようになります。
Monitoring状況の確認
MonitoringがEvent Ruleに基づいて検出したイベントは、DashboardおよびMonitoringのEventsで一覧表示されます。
Eventsでは、Eventを各種の条件で検索することができます。また、不要(目障り)なイベントを削除することも可能です。
Eventの詳細を見る場合には、イベント番号をクリックします。
PHP Errorなど、発生箇所が特定できる場合は、PHPコード内の発生したコードを示します。タブによって、各Eventに応じた情報を参照できます。