こんにちはPHP嫌いなあだちんです。
↑このフレーズで始まるの3年ぶりっ!?

開発していると、このページ重いなあ…
インフラスケールアップするか?いやいやそんなCPU使用料使ってないし、
もしかしたらこのPHPプログラムに原因があるのでは?など
どのメソッドが重くなっているかリファクタリングすることでボトルネックを探しやすくしてくれて、
さらに可視化してくれるxhprof、xhgui、graphvizを導入してみました。しかもFacebook製とな!


■Environment

・EC2 Amazon Linux t2.micro
・RDS Aurora
・PHP 5/7
・Apache 2.2.34


■xhprof install

・php-devel install

・xhprof-0.9.4 install

・edit php.ini

・make log 

・確認

OK!


■xhgui install

https://github.com/pierrejoye/xhprof-pr

・git clone

・header.php

・config.php

DBの設定と$controlIPsは使わないのでfalseにしてそれ以下はコメントアウトします。

・make database xhprof

テーブル作成はxhprof_lib/utils/Db/Pdo.phpに書いてるのでそのままコピペ。

・/etc/httpd/conf.d/xhprof.conf

nginxでもheader.php読むように設定すればOK。念のためダイジェスト認証も。
久々apache触った。。。apache再起動忘れずに。
ちなみにxhguiはプロファイル結果を可視化して分かりやすく表示するもの。

・確認

アクセスすればこんなUIが出てくるはず。

しかし!

これだけではない!!


■graphviz

プロファイル結果をグラフ表示するgraphvizを入れないとアカン。

・graphviz graphviz-gd

・config.php


 ■解析

・index.php

適当にアクセスしたいページF5してxhprofのページからRunIDをクリックすると。。。

 

おおおおどこが怪しいか分かる!!


■まとめ

PHPで開発してる人は導入検討してみるといいかも!
可視化すばらっ。

参考
http://i-plug-tech.hatenablog.com/entry/2017/01/04/231534
https://qiita.com/w_cota/items/48667a845cd06d969d4a

The following two tabs change content below.

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、ランサーズにてサーバ系のお仕事も副業で行い、他社インフラレスポンス改善、ansibleでのインフラコード化を推進し、未経験によるエンジニア勉強会なども実施している。 そして「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。 現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください