項目用php開發,在生產運行的過程中,應該一段時間監測下php腳本運行狀態,哪些php進程速度太慢,有哪些錯誤日志。
問:如何來查看檢測比較慢的php腳本呢?
答:查看php-fpm慢日志。
1.先查找到配置文件存放地址
find / -name php-fpm.conf
vi /usr/servers/php/etc/php-fpm.conf
打開看看你的慢日志是否開啟,或者開啟的慢日志存放在哪里。
對應的地址都換成你自己的即可。
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.觀察慢日志信息
tailf /var/logdata/php-fpm/php-fpm-slowlog.log
開啟后,如果有腳本執行超過指定的時間,就會在指定的日志文件中寫入類似如下的信息:
[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
————————————————
原文鏈接:https://blog.csdn.net/ty_hf/java/article/details/55504172
前言:
對於我們做php開發的人員,上了生產環境,一定要把相關debug,display_errors錯誤提示等關掉。誰還難免不犯個錯呢?這樣能防止非致命性報錯下,導致項目路徑、數據庫等信息泄漏。
問:那么問題來了,我們在生產該如何查看php等相關錯誤呢?
答:記錄到錯誤日志里。error.log(或直接發送到syslog)
下邊就如何配置和查看日志作出簡單敘述。
一.相關配置
需要將php.ini中的配置指令做如下修改:
1. error_reporting = E_ALL ;將會向PHP報告發生的每個錯誤
2. display_errors = Off ;不顯示滿足上條 指令所定義規則的所有錯誤報告
3. log_errors = On ;開啟錯誤日志
4. log_errors_max_len = 1024 ;設置每個日志項的最大長度
5. error_log = /var/php_errors.log ;指定產生的 錯誤報告寫入的日志文件位置
PHP的配置文件按上面的方式設置完成以后,並重新啟動Web服務器。這樣,在執行PHP的任何腳本文件時,所產生的所有錯誤報告都不會在瀏覽器中顯示,而會記錄在自己指定的錯誤日志/usr/local/error.log中。此外,不僅可以記錄滿足error_reporting所定義規則的所有錯誤,
而且還可以使用PHP中的error_log()函數,送出一個用戶自定義的錯誤信息。
二.查看存放地址
1.通過php.ini來查看錯誤日志存放地址
echo '<?php phpinfo(); ?>' | php 2>&1 |grep -i error_log
或者在一個php文件中輸出 phpinfo();查看錯誤日志存放位置
2.查看日志存放位置
vi /etc/php.ini
3.查看日志:
tail -f -50 /var/php_errors.log
除了一般的錯誤輸出之外,PHP還允許向系統syslog中發送定制的消息。雖然通過前面介紹的error_log()函數,也可以向syslog中發送定制的消息,但在PHP中為這個特性提供了需要一起使用的4個專用函數。這里就不介紹了。
————————————————
原文鏈接:https://blog.csdn.net/ty_hf/java/article/details/55505262