雖然能夠經過 nginx 的 accesslog 日誌查詢到用戶訪問接口或網頁消耗的時間,可是不能清晰的追蹤到哪一個文件或函數慢,php
能夠經過 php-fpm 慢日誌查詢檢測 php 腳本運行狀態,哪些 php 進程比較慢,有哪些錯誤日誌nginx
1 先查找到配置文件存放的位置web
find / -name php-fpm.conf
打開配置文件看慢日誌查詢是否開啓,或者開啓的慢日誌存放路徑curl
2 若是沒有開啓慢日誌查詢,先開啓函數
默認狀況下 request_slowlog_timeout 的值爲 0,表示關閉慢日誌輸出,因此開啓慢日誌查詢須要將 request_slowlog_timeoutphp-fpm
設置成大於 0 的值,表示 php 腳本執行時間超過 request_slowlog_timeout 設置的時間將會被記錄到 slowlog 中,而後查看慢日誌對url
腳本進行對應的處理日誌
request_slowlog_timeout 和 slowlog 須要同時開啓,slowlog 表示慢日誌存儲的位置,咱們能夠自定義也能夠直接使用默認的位置blog
默認的位置通常在 /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() 方法,每行冒號以後
都會有數字表示行號
開啓後,對錯誤日誌也有相關記錄,以下