XDebug - 找出 PHP 效能的瓶頸!
  • 6,048 views,
  • 2015-08-21,
  • 上傳者: Kuann Hung,
  •  0
Xdebug 是一套滿好用的 php debug 工具,這次拿它來做 profiling 的動作
因為開發的專案發現會有效能問題,但是不確定真的的問題點,與其瞎子摸象,不如透過工具找出真正的問題所在!!
 
先講結論~~~ 原來 DB 效能比我想像的要好,反而是 Disk I/O 比我想像的要差,就連 file_exists, is_dir,甚至 include / include_once / reqire / require_once 這類的動作都會造成效能問題!!! 
所以把檔案拆太破碎看來不是件好事情!!!
步驟
安裝 XDebug
1.
下載 xdebug.dll
先到這邊 http://xdebug.org/download.php 下載你適合你環境的 xdebug
要注意你所使用的 PHP 版本, 32/64 位元以及是否為 TS (thread safe, 如果是 apache 就勇敢的選擇 ts 吧)
2.
設定 php.ini
增加以下設定
extension=php_xdebug.dll
zend_extension_ts="C:\AppServ\php5\ext\php_xdebug.dll"
[XDebug]
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=C:\AppServ\www\xdebug
這邊把 profiler_enable 設為 0 是為了不要每次都產,而是有設定動作時才產
3.
啟用 Xdebug profiler
只要透過 GET / POST 或是 COOKIE 的方式增加 XDEBUG_PROFILE=1 就可以了
最簡單的方式就是
4.
查詢結果
當你這樣使用之後就會發現,在  xdebug.profiler_output_dir 所設定的目錄 (e.g: C:\AppServ\www\xdebug) 就會出現一個檔案
但是這個檔案看不太懂,所以我們就需要一些其他工具囉
 
WinCacheGrind 是我自己覺得好用的,推薦給大家,到這邊下載就可以了
用了卻還是找不出瓶頸在哪邊?
5.
給點壓力再測試一次吧!!
如果只測試一次,大概不太會容易找到問題點!~ 但是如果用 ab 跑一下,那就比較容易發現問題囉!!
像是這樣
ab -n 200 -c 100 http://your-server/index.php
 
先執行 ab 讓流量往上衝,然後再跑
http://your-server/index.php?XDEBUG_PROFILE=1
這樣看到的結果可能會不太一樣喔!!
6.
結論 + 小技巧
在我自己抓問題時發現,原來 file_exists 是挺吃效能的
然後如果你 include 一大堆檔案,可能也會拖慢喔!!
如果非用 file_exists 的話,其實可用這樣的小技巧喔
@!!filemtime($file)
這樣的速度在 Loading 重的時候比直接用 file_exists 還要快喔!!
Facebook 討論區載入中...
資料夾 :
發表時間 :
2015-08-21 14:20:00
觀看數 :
6,048
發表人 :
Kuann Hung
部門 :
老洪的 IT 學習系統
QR Code :