2008.03.27

PHPアプリのボトルネックを調べる

PHPではアプリケーションのボトルネックを調べるツールが無償で提供されています。
使用するツールはXdebugとWinCacheGrindです。
XdebugではPHPアプリけーションのプロファイリングを行います。

インストール方法は、peclが使用できる環境であれば
pecl install xdebug とコマンドを打てば自動でインストールされます。

使用するための設定は、php.ini内に設定を記述します。

extension=xdebug.so              ←PHP拡張のファイル名もしくはファイルパス
xdebug.profiler_enable = 1          ←1にしないと有効にならない
xdebug.profiler_output_dir = "/var/xdebug/"  ←プロファイラ結果を出力する場所

このあと、Apacheを再起動すればXdebugの設定は完了です。

/etc/php.d に拡張の名前でiniファイルを作成して拡張毎に設定ファイルを作成したほうが
どの拡張が有効になっているのか分かりやすいので、オススメです。


次に、WinCacheGrindというプロファイラ解析ツールをダウンロードします。
WinCacheGrind Download

※インストールは割愛

PHPアプリケーションを実行すると、先ほど設定したプロファイル出力先に
cachegrind.out.***(数値)という名前のファイルができます。
そのファイルをダウンロードし、WinCacheGrindで開いてください。
そうすると、下図のような解析結果が表示されます。
今回は、弊社で無償配布しているBugZeroのプロファイルを読み込んでみました。
左に表示されているツリーは、呼び出された関数が表示されます。
ツリーを展開していくと、その関数の中で実行されている関数が右側のウィンドウに表示されます。
Cumという箇所が処理に要している時間です。

bugzero.jpg

まだ使いこなせていませんが、ボトルネック探しに役立ちそうなツールです。

※Xdebugでプロファイリングする処理が重いので、Xdebugを有効にしたまま通常のテストや、
負荷テストを行わないようにしてください。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
nishimaki