LoginSignup
4
3

More than 1 year has passed since last update.

docker+blackfire環境の構築(php)

Last updated at Posted at 2021-05-12

blackfireとは

パフォーマンスプロファイリングサービスです。
関数がどの経路で読み込んでいて、
どのくらい処理に時間がかかり、
どのくらいメモリを使用しているのか、
目視で確認できるので、アプリケーションのパフォーマンス向上などに使用します。

用意するもの

環境を構築していく

docker-compose.yml
blackfire:
    image: blackfire/blackfire
    ports: ["8707"]
    environment:
      BLACKFIRE_SERVER_ID: {サーバーキー}
      BLACKFIRE_SERVER_TOKEN: {サーバートークン}
      BLACKFIRE_CLIENT_ID: {クライアントキー}
      BLACKFIRE_CLIENT_TOKEN: {クライアントトークン}

サーバーキー・トークン、クライアントキー・トークンは、blackfireのマイページから確認できます。

Dockerfile
RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
   && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/alpine/amd64/$version \
   && mkdir -p /tmp/blackfire \
   && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire \
   && mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so \
   && printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini \
   && rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz

用意していたDockerfileに追記する形で問題ありません。
また、すでに構築ずみの環境でしたら、buildし直しましょう。

$ docker-compose buide --no-cache

$ docker-compose up -d

これで環境は問題なくできるはずです。

blackfireの使い方

計測したいページを開きます。(ローカル環境でも大丈夫です。)
拡張機能のblackfire profilerを起動し、profile!ボタンを元気よくクリックすれば計測してくれます。
スクリーンショット 2021-05-12 21.11.58.png

結構待ちますが、終わったらView Call Graphをクリックで、ページ遷移し詳細がみれます。

使ってみた感想

当環境が、Laravelを使っています。
サービスプロバイダーやミドルウェア、ビジネスロジック、Collection操作などの見直しに便利だったなぁと思いました。
SQLチューニングも行ったのですが、blackfireはあくまでロジックの精査に使用し、SQLに関してはdebugbarなどで確認しました。
日々の開発の中でなかなか最高パフォーマンスを出しながら開発するのも難しいですが、気づいたらめっちゃ遅い!とかなると思うので、タイミング見てパフォーマンスを気にしながら進めるのも重要だなと実感しました。

4
3
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
4
3