雖然可以通過 nginx 的 accesslog 日志查詢到用戶訪問接口或網頁消耗的時間,但是不能清晰的追蹤到哪個文件或函數慢,
可以通過 php-fpm 慢日志查詢檢測 php 腳本運行狀態,哪些 php 進程比較慢,有哪些錯誤日志
1 先查找到配置文件存放的位置
find / -name php-fpm.conf
打開配置文件看慢日志查詢是否開啟,或者開啟的慢日志存放路徑
2 如果沒有開啟慢日志查詢,先開啟
默認情況下 request_slowlog_timeout 的值為 0,表示關閉慢日志輸出,所以開啟慢日志查詢需要將 request_slowlog_timeout
設置成大於 0 的值,表示 php 腳本執行時間超過 request_slowlog_timeout 設置的時間將會被記錄到 slowlog 中,然后查看慢日志對
腳本進行對應的處理
request_slowlog_timeout 和 slowlog 需要同時開啟,slowlog 表示慢日志存儲的位置,我們可以自定義也可以直接使用默認的位置
默認的位置一般在 /data/php/log/php-fpm.log ,同時需要將 request_slowlog_timeout、slowlog 前面的分號去掉才算是開啟,然后重啟
php-fpm
3 觀察慢日志信息
開啟后,如果有腳本執行時間超過設置時間,會被記錄到指定的日志文件中,格式如下(摘抄來自網上):
[19-Dec-2016 16:54:49] [pool www] pid 18575 script_filename = /home/web/htdocs/sandbox_canglong/test/tt.php [0x0000000003a00dc8] curl_exec() /home/web/htdocs/sandbox_canglong/test/tt.php:2 [0x0000000003a00cd0] exfilter_curl_get() /home/web/htdocs/sandbox_canglong/test/tt.php:6
script_filename 表示入口文件,curl_exec() 表示執行這個函數時超時,exfilter_curl_get() 表示是這個方法調用的 curl_exec() 方法,每行冒號之后
都會有數字表示行號
開啟后,對錯誤日志也有相關記錄,如下