こんにちは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年生まれ。 Infra Engineer/SRE In Shibuya 2013年新卒に自宅サーバを構築し、この技術ブログを立ち上げたが、 2017年に電源が壊れConoHaにリプレイスした。 好きな構成管理ツールはansible,Terraform。 インフラならAWS/docker。言語はPython。 WEBサーバならH2O。そして脆弱性スキャナVuls追いながらVulsRepo init fileのコミッターでもある。 HIPHOPが好きすぎてTrack Makerでもある。

コメントを残す