「Blackfire」というPHPプロファイラーが出たので使ってみた(最速レビュー)
Blackfireとは?
SensioLabsからリリースされた、PHPのプロファイリングツールです。 プロファイリング結果をブラウザ上で簡単に見ることができるようになります。
Blackfireのデモ動画
以前は「SensioLabsProfiler」と呼ばれており、サービスを出すとだけ告知されていたのですがようやく利用できるようになりました。
現在はbeta版として提供されていて、DebianとRed HatベースのLinuxかMac OSが対応しています。
利用するためには、Blackfileの「Join the beta」からSensioLabsConnectに登録する必要があります。
アーキテクチャ(ざっくり)
- CompanionというChorome拡張を使ってプロファイリングを実行
- ProbeというPHP extensionでアプリケーションのプロファイルを計測
- blackfire-agentでプロファイル結果を集めてBlackfireサーバー側にデータを送信
- プロファイラーで集めた結果をブラウザで確認する
セットアップ
インストール方法は、マニュアルのGetting Started に丁寧に書かれています。 こちらを見ることをおすすめします。
私はMacにインストールしたので、以下Macにインストールする場合の話をします。
Chrome拡張のインストール
利用可能なブラウザはChromeだけのようです。 Googole Chromeをインストールしてない人はまずインストールしてください。
Chrome 拡張機能の「Blackfire Companion」をインストールします。
blackfire-agentのインストール
手順はMacだと以下
$ brew tap blackfireio/homebrew-blackfire $ brew install blackfire-agent
Debianや Red Hat 向けのリポジトリもありますので各環境に合わせてインストールしてください。
続いてServer IdとServer Tokenを登録します。
以下のコマンドを実行します。
$ blackfire-agent -register
Server IdとServer Tokenは、Getting started のページに記載されているので、それを入力します。
現在、1アカウントにつき1つのAgentしか登録できないようです。 ただし、Blackfire Accountページに「Register an Agent」ボタンがあるので将来的には複数agentを登録できるようになるのでしょう。
blackfire-agent が自動起動するように登録します。
$ ln -sfv /usr/local/opt/blackfire-agent/*.plist ~/Library/LaunchAgents
今回は手動で起動
$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.blackfire-agent.plist
Probeのインストール
Probeのインストールは環境によってはちょっと面倒ですし、場合によっては利用さえできない可能性があります。
- 現時点で、LInux環境ではPHP5.6に未対応
- PHPのビルド時に、
--enable-debug
つけて有効化していると利用不可 XDebug
やXHProf
を利用していると干渉するかも(確認していない)
「homebrew-phpを利用していれば特に問題ないよ」とは書かれてました。
ちなみに、私は--enable-debug
としてPHPをビルドしていたので、PHPをインストールし直しました。
ドキュメントにも書かれていますが、自前でビルドしたPHPやMac標準のPHPを使う場合には、以下のコマンドを実行します。
$ brew install blackfire-php55 --without-homebrew-php
homebrew-phpでインストールしている場合には「--without-homebrew-php」を消すと付けずに実行します。
一応モジュールのインストールを確認
$ php -m | grep blackfire blackfire
使い方
試しにSymfonyフレームワークのプロファイルを取ってみます。
プロファイリングしたいページにアクセスし「Blackfire Companion」の拡張ボタンをクリック。続いてprofileボタンをクリックします。
プロファイリングの進行状況はページの上部に表示され、完了するとプロファイリング結果のページヘのリンクが表示されます。
プロファイリング結果(profile-slots)のページへアクセスすると、コールグラフなどが表示されます。
左側のメソッドと、右側のコールグラフが連動していて、右側のグラフをクリックするとその部分の詳細を見ていくことができます。 xhprofのコールグラフはあくまで画像として出力されるだけなので、リンクになっていて該当メソッドの場所にジャンプできるのは便利ですね。
実行時間、ディスクI/O、使用メモリーの順で並び替えたり、コストの高いメソッドを抽出したりとボトルネックとなっている部分を探しやすいようになっています。
既存のプロファイラーだと実行時間ぐらいしか見ることができなかったので、これはありがたいですね。
もう少し使いこんでみようと思います。