以前blackfireを試したんですが、そのときはブラウザでページを開いて、
chrome extentionでプロファイリングしてました。
なのでGET以外のリクエストがプロファイルやりづらく、
もうちょっといいやり方無いかなと思って探してみました。
やることはblackfire agentをどこかにインストールして、そこからcurlコマンドで計測するという感じです。
今回自分はMacでやったのでbrewで入れました。
インストール手順はこのあたりです。
configのid, tokenとサーバに設定するid, tokenは異なるので注意が必要です。
blackfire.io
実際にやってみるとこんな感じでした。
$blackfire config -------------------------------------------------------------- Welcome to the Blackfire CLI utility configuration assistant -------------------------------------------------------------- Your Blackfire Client ID and Token are available at: https://blackfire.io/my/settings/credentials#client Enter your Client ID: XXX Enter your Client Token: YYY ------------------------------------------------------------------------------ The following configuration has been updated successfully /path/to/.blackfire.ini Thank you for using Blackfire ------------------------------------------------------------------------------
サーバの実装として使ったレポジトリはこちら
blackfireはcurlコマンドをwrapしてくれるみたいです。
curlでのリクエストを取れればいいんですけど、そんなときに便利なのがchromeのdev toolですね。
こんな感じでリクエストをコピーしてきます。
実際blackfireでcurlをwrapして叩いてみました。
GraphのURLはごまかしてます。
# 対象のserver起動 $make compose id=xxx token=yyy [master]@(blackfire-with-slim) docker-compose build Building web Step 1/10 : FROM php:7.1.10 ---> c342f917459a Step 2/10 : RUN apt-get update ---> Using cache ---> 8f08514cd607 Step 3/10 : RUN apt-get install -y wget ---> Using cache ---> 558f46f226ce Step 4/10 : RUN wget -O - https://packagecloud.io/gpg.key | apt-key add - ---> Using cache ---> dc02abcab12c Step 5/10 : RUN echo "deb http://packages.blackfire.io/debian any main" | tee /etc/apt/sources.list.d/blackfire.list ---> Using cache ---> 947920d5728f Step 6/10 : RUN apt-get update ---> Using cache ---> 98aa1854625d Step 7/10 : RUN apt-get install -y blackfire-agent ---> Using cache ---> d0725ad5b875 Step 8/10 : COPY ./blackfire.ini /etc/blackfire/agent ---> Using cache ---> 9a8965d48d25 Step 9/10 : RUN /etc/init.d/blackfire-agent restart ---> Using cache ---> f6360b5dc8d4 Step 10/10 : RUN apt-get install blackfire-php ---> Using cache ---> 40f8638aca26 Successfully built 40f8638aca26 Successfully tagged blackfire-with-slim_web:latest docker-compose up Starting blackfire-with-slim_web_1 ... done Attaching to blackfire-with-slim_web_1 web_1 | make: Entering directory '/opt/app' web_1 | /etc/init.d/blackfire-agent start web_1 | Starting Blackfire Agent: blackfire-agent. web_1 | /usr/local/bin/php -S 0.0.0.0:8080 -t web # 別ターミナルで実行してみます $ blackfire curl 'http://localhost:8080/hey' -H 'Origin: http://localhost:8080' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' -H 'Content-Type: application/json' -H 'Accept: */*' -H 'Referer: http://localhost:8080/' -H 'Connection: keep-alive' --data-binary '{"name":"blackfire"}' --compressed Profiling: [########################################] 10/10 Blackfire cURL completed Graph URL https://blackfire.io/profiles/XXXXXXX/graph No tests! Create some now https://blackfire.io/docs/cookbooks/tests No recommendations Wall Time 126ms I/O Wait n/a CPU Time n/a Memory 1MB Network n/a n/a n/a SQL n/a n/a
Graph URLで表示されているURLにアクセスするとこんなグラフが見れました。