專案用php開發,在生產執行的過程中,應該一段時間監測下php指令碼執行狀態,哪些php程序速度太慢,有哪些錯誤日誌。
問:如何來檢視檢測比較慢的php指令碼呢?
答:檢視php-fpm慢日誌。
1.先查找到配置檔案存放位址
開啟看看你的慢日誌是否開啟,或者開啟的慢日誌存放在**。
對應的位址都換成你自己的即可。
2.如果沒有開啟慢日誌查詢,先開啟
預設的 request_slowlog_timeout 是0,php的慢指令碼日誌是關閉的,因此設定為大於0的n,表示執行時間超過n的指令碼將記錄進入slowlog裡。
然後監測到**存在問題的時候檢視下slowlog即可發現慢指令碼,對指令碼進行檢查處理即可。
request_slowlog_timeout 和 slowlog需要同時設定,
開啟request_slowlog_timeout的同時需要開啟 slowlog,
慢日誌路徑需要手動建立
去掉request_slowlog_timeout 、slowlog的字首分號';'
設定request_slowlog_timeout =1;
:wq //儲存退出建立慢日誌目錄
mkdir -p /var/logdata/php-fpm/php-fpm-slowlog.log
killall php-fpm/usr/servers/php/sbin/php-fpm //重啟php-fpm
3.找到慢日誌存放位址
4.觀察慢日誌資訊
開啟後,如果有指令碼執行超過指定的時間,就會在指定的日誌檔案中寫入類似如下的資訊:
[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()的方法是exfilter_curl_get() 。
每行冒號後面的數字是行號。
[19-dec-2016 15:55:37] warning: [pool www] child 18575, script '/home/web/htdocs/sandbox_canglong/test/tt.php' (request: "get /test/tt.php") executing too slow (1.006222 sec), logging
[19-dec-2016 15:55:37] notice: child 18575 stopped for tracing
[19-dec-2016 15:55:37] notice: about to trace 18575
[19-dec-2016 15:55:37] notice: finished trace of 18575
系統日誌:記錄系統相關資訊:
apache訪問日誌與錯誤日誌:
nginx訪問日誌與錯誤日誌:
php-fpm慢日誌:檢測執行較慢的php指令碼:
php錯誤日誌:檢測php執行時或使用者自記錄錯誤日誌:
mysql慢日誌:記錄mysql伺服器中影響效能的sql:
日誌 php fpm慢日誌查詢
1.先查找到配置檔案存放位址 find name php fpm.conf vi usr servers php etc php fpm.conf 開啟看看你的慢日誌是否開啟,或者開啟的慢日誌存放在 對應的位址都換成你自己的即可。2.如果沒有開啟慢日誌查詢,先開啟 預設的 request slowl...
php fpm 慢日誌查詢
雖然可以通過 nginx 的 accesslog 日誌查詢到使用者訪問介面或網頁消耗的時間,但是不能清晰的追蹤到哪個檔案或函式慢,可以通過 php fpm 慢日誌查詢檢測 php 指令碼執行狀態,哪些 php 程序比較慢,有哪些錯誤日誌 1 先查找到配置檔案存放的位置 find name php f...
Mysql日誌 慢查詢日誌
3.設定variables的示範 慢查詢日誌能為sql語句的優化帶來很好的幫助。可以設定乙個閾值,將執行時間超過該值的所有sql語句都記錄到慢查詢日誌檔案中。閾值long query time表示慢查詢的時間閾值,預設值為10,代表10秒。注 慢查詢日誌只會記錄大於閾值的sql語句,小於和等於的sq...