SHOEISHA iD

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

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

特集記事

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

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

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

Code Tracing(コードトレース)

 PHPアプリケーションの実行時間やメモリ使用が肥大化した場合、何が原因かPHPエラーログから推測することはできるでしょうか。まったく無理です。PHPエラーログには、そのような情報は記録されていません。それでは、一般的な運用監視によって、原因を見つけることができるでしょうか。PHPアプリケーションの実行時間やメモリ使用が肥大化の原因が、OSなどPHP実行環境以外であれば原因を予測できるかもしれません。しかし、まずできないでしょう。Zend Server 8 英語版に搭載されているCode Tracingなら可能です。

 Code Tracingは、対象となるPHPコードの実行状況をステップbyステップで記録する機能です。そのため、実行時間やメモリ使用が肥大化をピンポイントで発見できます。

 Tracing Tree表示は、対象となるPHPコードの実行状況を表します。実行時間順やメモリ使用量順にソートできます。プログラミングで最も注目される実行時間とメモリ使用を簡単に特定できます。

図18 Code TracingのTracing Tree表示
図18 Code TracingのTracing Tree表示

 Statistics per Functionは、関数レベルで集計したものです。小さい処理でも繰り返し実行する処理であれば、パフォーマンスチューニングの対象になります。首尾よくパフォーマンスを改善できれば、その波及効果も多きものです。

図19 Code TracingのStatistics per Function表示
図19 Code Tracingの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ツールバーです。

図20 WordPressでのZ-Rayツールバー(画面最下部)
図20 WordPressでのZ-Rayツールバー(画面最下部)

 画面下部のいくつかのアイコンと数値が表示されているこの部分がZ-Rayツールバーなのです。これらのアイコンは、クリックすると詳細情報がポップアップします。

図21 Z-Rayツールバー拡大
図21 Z-Rayツールバー拡大

 Z-Rayでは、このページを作成する際にWebサーバ側で行っている処理を集約してZ-Rayツールバーに送信しています。

 レスポンスタイム/容量をクリックすると、このWebページを作成するための実行されたPHPコードの実行時間とメモリ使用量がポップアップ表示されます。

図22 レスポンスタイム/容量
図22 レスポンスタイム/容量

 データベースは、このページを生成するために実行したSQLステートメントと個々のステートメントの実行時間を確認できます。

図23 データベース処理(ポップアップ部分のみ)
図23 データベース処理(ポップアップ部分のみ)

 さらにPHPコード内で呼び出した関数の内容も表示できます。もちろん、関数毎の呼び出し回数や実行時間も参照できます。

図24 呼び出し関数(ポップアップ部分のみ)
図24 呼び出し関数(ポップアップ部分のみ)

PluginによるPHPアプリケーションに特化した解析

 PHPアプリケーションには、デファクトスタンダートとなるようなアプリケーションがいくつも存在します。このようなアプリケーションを利用する場合、ソースコードレベルの解析はあまり行いません。例えば、WordPressを使用する場合、ソースコードレベルの解析を行うことは稀です。それよりもWordPress独自の機能や仕組みに乗っとり、解析した方が効率的です。Zend Server 8 英語版では、アプリケーション別の解析機能をPluginといいます。

図25 Manage Plugins(導入済Plugin一覧)
図25 Manage Plugins(導入済Plugin一覧)

 さまざまなPluginが提供されており、Zend Server 8 英語版のGalleryから無償で導入することができます。

図26 Gallery(導入可能なPlugin一覧)
図26 Gallery(導入可能なPlugin一覧)

 WordPressのPluginも用意されています。Deploymentのデモとして提供しているWordPressを導入すると自動的にWordPressのPluginも導入されます。

図27 WordPressプラグイン(ポップアップ部分のみ)
図27 WordPressプラグイン(ポップアップ部分のみ)

 WordPressでは、Dashboardを含めて7種類のアイコンを用意しています。これらのアイコンで、WordPress特有のパフォーマンス情報を得ることができます。

むすび

 Zend Server 8 英語版は、評価期間中に本書が紹介した機能をすべて無償で利用できます。ぜひ、実際のPHPアプリケーションで活用してください。おそらく、次々と問題点を発見できると思います。問題のFixにもZend Server 8 英語版が活躍することでしょう。きっと、評価期間が終了する30日後には、見違えるほどのクオリティとパフォーマンスが備わったPHPアプリケーションになっていると思います。

次のページ
コラム:PHP進化の歴史

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング