LoginSignup
0
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-26

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1