[PHP]Blackfireを使ってプロファイリングしてみよう!


Blackfire

Blackfire

  • どのメソッドを通り、どれくらい時間がかかり、メモリはどの位消費している等をプロファイリングしてくれる素晴らしいサービス
  • フリープラン・プレミアムプラン・エンタープライズプランと3種類ある
  • フリープランでも十分なサービスを受けることができる

さっそく使ってみる

試した環境

  • Vagrant 1.7.4
  • CentOS 6.7
  • PHP 5.6.24

アカウントの作成

Sign up

  • 今回はGoogleアカウントで登録

インストール

Installation

  • 上記ページに遷移
  • 環境別タブから「CentOS」を選択
  • 手順に沿ってひたすらインストール
    • 基本的にコピー・インストールの繰り返しでOK
    • ドキュメントが丁寧なので迷わ無いはず

プロファイリング

  • インストールの工程が全て完了したらプロファイリングを行う
  • コマンドラインかChrome拡張でプロファイリングが可能

と、ちょっとその前に、、、

トラブルシューティング

  • 1件ハマったところがあったので記載
  • 全てのインストール完了したけれど、プロファイリングが上手くいかない。。。
  • 現象は以下(コマンドラインの場合)
$ blackfire curl [検証URL]
Are you authorized to profile this page? No probe response, missing PHP extension or invalid signature for relaying agent.

゚(∀) ゚ エッ? ヘ(゚д゚)ノ ナニコレ?

  • 対処方法としてはインストール後に httpd の再起動も必要(たぶん、、、)
$ sudo service httpd restart
  • この後は問題なくプロファイリングできた!
  • 成功すると以下のような感じ(コマンドライン版)
$ blackfire curl [検証URL]
Profiling: [########################################] 10/10
Blackfire cURL completed
Graph URL https://blackfire.io/profiles/[key]/graph
No tests! Create some now https://blackfire.io/docs/cookbooks/tests
No recommendations

Wall Time     324ms
CPU Time      223ms
I/O Time      101ms
Memory       5.27MB
Network         n/a     n/a       -
SQL             n/a       -

気を取り直してプロファイリング

コマンドラインでプロファイリング

  • もうやったので割愛

Chrome拡張でプロファイリング

インストール

Chrome extension

  • 上記ページへ遷移
  • install the Companion ボタンを押下して拡張をインストール

プロファイリング

  • プロファイリングしたいページヘ遷移
    • Blackfireをインストールした環境のページ
  • Chrome拡張を選んで Profile ボタンをクリック
  • プロファイリング中
  • できた!

プロファイリング結果を見る

Profiles

  • 上記ページへ遷移
  • 取得したプロファイリングが一覧で表示されるはずなので、閲覧したプロファイリングを選択する
  • なんや色々見られる!!
    • ※プロファイリング結果の見方は今回割愛させていただきます(^ω^)

プロファイリング結果を見て得られるもの

まだまだ使い始めたばかりなので何がなんやら状態ですが、
以下の情報からどこを最適化すればよいか分かるようになった

  • 全体でどのくらい時間かかっているか分かる
  • どこがボトルネックになっているか分かる
  • メソッドが何回コールされているか分かる

以上、インストールからプロファイリングの取得・閲覧まででした。