大家新年快樂!
一般狀況下我們使用 debugbar 就綽綽有餘了。
但有時候有些狀況(比如說執行超時)即使絞盡腦汁也都無法想出是哪裡出了問題,
在有用框架的時候這種問題更為深刻,
因為框架的教學文件也只會跟你說 api 的呼叫方式,絕不會告訴你這些程式背後又做了多少事情。
換句話說,有時候我們根本無從查起程式中的效能瓶頸出現在哪!
但還好有個工具可以幫我們紀錄執行過程完整的 callstack。
它就是大名鼎鼎的「xdebug」
在安裝好 xdebug 之後,我們會在打開 xdebug profiler 紀錄完整的 callstack,
並用 kcachegrind 分析它!
sudo apt-get update
sudo apt-get install kcachegrind
去 php 的套件資料夾找到 xdebug.ini,
(比如說我的環境是 /etc/php/7.1/mods-available/xdebug.ini)
並加入下面這幾行
xdebug.profiler_enable = 1
xdebug.profiler_output_name = xdebug.out.%t
xdebug.profiler_output_dir = /home/[使用者名稱]/[某個資料夾你自己挑]
要注意的是,當打開這個 profiler 的時候,
因為要紀錄的關係,執行會變得異常緩慢,這是正常的!
你也要確保沒有人同時也在打開 profiler 的主機上執行程式,不然會很難確定你的那一份在哪!
大家就會得到像是底下這樣的圖片,就可以分析瓶頸在哪拉~
之前有遇過遇上效能問題,卻百思不得其解瓶頸在哪的狀況,
藉由這個工具就能辨識出哪個地方耗時最久了~
有時候真的覺得,阿~有工具真好ㄋ!