PHP
xhprof

XHProf による PHP パフォーマンスプロファイリング

More than 1 year has passed since last update.


XHProf による PHP パフォーマンスプロファイリング

特定のページで Update を行ったときだけ、なかなかレスポンスが帰ってこない。

ということでプロファイルをとってみます。


PHP

Version: 5.6.25


XHProf

PHP 専用のプロファイラです。

導入手順は Google さんにおまかせします。

ただ、XHProf は活発にメンテナンスされていない?ようなので、いま使うなら backfire とかいいかも。


XHGui, Callgraph

プロファイリング結果を視覚化するために使います。


結果の見方をざっくりと

トップ画面。

0001.jpg

ページ上部「Hardest Hit」の「Today」をクリック。

0002.jpg

とりあえず「Avg Wall Time」降順に並べて目的のパスを見つける。

URL をクリックすると実行時間などがグラフで描画されます。

0003.jpg

グラフの頂点をクリックすると詳細が表示される。

0004.jpg

今回特に注目したのは「Exclusive Wall Time」です。Wall Time という項目もありますが、これは Child Function を含めた関数の実行時間になります。対して Exclusive Wall Time は 関数単体(Current Function)の実行時間です。

Exclusive Wall Time 降順に並び替えると「fread」関数がトップにきます。

関数名をクリックすると詳細なデータを見れます。

Screen Shot 2017-06-26 at 09.25.44.png

呼び出し元(Parent Function)は「Cake\Network\Socket::read」だということがわかりました。


さらに遡っていくと「Cake\Mailer\Transport\SmtpTransport::_sendData」に行き着きます。


ここでふと思い立ってエラーログをみてみると、、、

0005.jpg

なんてこったい\(^o^)/


タイムアウトまでがんばっていたので、なかなかレスポンスが帰ってこなかったようです。


プロファイリングの前に、まずはログを確認しないとですね。

ちなみに「View Callgraph」をクリックするとコールグラフが描画されます。

こんな感じ。

Screen Shot 2017-06-26 at 09.26.28.png