SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Zend Server 8 英語版に搭載されたAPMの威力

無償環境で挑むPHPアプリケーションのデバッグ&パフォーマンスチューニング

  • X ポスト
  • このエントリーをはてなブックマークに追加

第3章 Zend Server 8 注目機能の活用

 Zend Server 8 英語版が動作したところで、PHPアプリケーション開発に最適な機能を詳しく紹介します。本章の内容を参考にデバッグやパフォーマンスチューニングにご活用ください。

Deployment(デプロイ)

 Deploymentは、PHPアプリケーションをパッケージのようにインストールしやすくするための仕組みです。また、Deploymentは、PHPアプリケーションを管理するための機能です。PHPアプリケーションを管理するためのコンテナのような概念です。PHPコードは、ファイルシステムのディレクトリ構造で管理しやすいように分けます。これらは、URLの表記から見れば、階層構造に分けられています。PHP実行環境から見ると格納場所が異なるだけで、すべて同一のレベルなのです。1つのWebサーバにいくつかのPHPアプリケーションが混在して配置された場合、重要性や用途によって分けて管理したいものです。Deploymentは、PHPアプリケーションごとの監視を実現します。

図7 Deploymentによる運用監視のイメージ
図7 Deploymentによる運用監視のイメージ

PHPアプリケーション登録(Deployment以外の登録方法)

 Zend Server 8 英語版では、Deployment以外の方法でもPHPアプリケーションを登録できます。登録すると後述のMonitoringの対象として、Event Ruleによって詳細な監視が可能になります。

 PHPアプリケーションの登録方法は、非常にシンプルです。PHPアプリケーションが格納されているPathを指定するのみです。

図8 PHPアプリケーションの登録画面
図8 PHPアプリケーションの登録画面

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ダイアログボックスを通じて導入を行います。

図9 管理画面の「Getting Started」の冒頭にDeploymentのサンプルがあります
図9 管理画面の「Getting Started」の冒頭にDeploymentのサンプルがあります

 「Zend Demo App」を実際にDeploymentで導入します。「Zend Demo App」は、Zend Server 8 英語版の機能紹介をするためのダミーアクセスやイベントを発生させます。

 まずは、[DEPLOY NOW]ボタンをクリックします。Deploymentによる「Zend Demo App」の導入がスタートします。

 Deploymentは、PHPアプリケーションのDeployment(インストール)手順を7ステップに定めています。

表6 Deploymentステップ
ステップ 概要 操作概要
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指定が必須です。

図10 アプリケーションの詳細設定
図10 アプリケーションの詳細設定

 最初のDeploymentなら、変更の必要がないので、そのまま[Next]ボタンをクリックします。

 Prerequisites Validationでは、「Zend Demo App」に必要なpdo_mysqlとZend Frameworkを自動的に導入します。

 最後にDeployment Summaryを確認して、Deploymentが完了します。

 Deploymentが完了すると、Manage AppsページにDeploymentしたPHPアプリケーションが表示されます。

図11 Manage AppsページにZend Demo App が追加されます
図11 Manage AppsページにZend Demo App が追加されます

 「Zend Demo App」は、Zend Server 8 英語版の機能紹介をするための、仮想のPHPアプリケーションです。さらにダミーのアクセスを生成して、架空の運用状況を創造します。

図12 Zend Demo App による架空の運用状況:Dashboardページ
図12 Zend Demo App による架空の運用状況:Dashboardページ

 「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を生成します。

表7 Event Ruleの検出項目
タイプ 概要
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種類を組み合わせられます。実際の設定画面をご覧いただくと分かりやすいと思います。

図13 Event Ruleの設定画面
図13 Event Ruleの設定画面

 Monitoringは、Event Ruleに基づいてPHPコードの実行を監視します。Event Ruleを逸脱するPHPコードの実行を検出するとEventを作成します。関係を図にすると次のようになります。

図14 Monitoring /Event Rule/Eventの関係
図14 Monitoring /Event Rule/Eventの関係

Monitoring状況の確認

 MonitoringがEvent Ruleに基づいて検出したイベントは、DashboardおよびMonitoringのEventsで一覧表示されます。

図15 DashboardでのEvent表示
図15 DashboardでのEvent表示

 Eventsでは、Eventを各種の条件で検索することができます。また、不要(目障り)なイベントを削除することも可能です。

図16 MonitoringのEventsの表示
図16 MonitoringのEventsの表示

 Eventの詳細を見る場合には、イベント番号をクリックします。

図17 Eventの表示
図17 Eventの表示

 PHP Errorなど、発生箇所が特定できる場合は、PHPコード内の発生したコードを示します。タブによって、各Eventに応じた情報を参照できます。

次のページ
むすび

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

佐藤 栄一(コネクト株式会社)(サトウ エイイチ(コネクトカブシキガイシャ))

PHPによるWebシステム構築をプロダクトとサポートサービスで支援するコネクト株式会社(創業時はゼンド・ジャパン株式会社)の創立メンバー。主要事業の一つであるMySQLの技術担当(Oracle Certified Expert,MySQL 5.1 Cluster Database Administrator)。ビックデータで注目を集めるCassandraも合わせて担当する。http://www.konekto.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8908 2015/09/14 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング