PHP慢指令碼日誌和Mysql的慢查詢日誌
1、PHP慢指令碼日誌
間歇性的502,是後端 PHP-FPM 不可用造成的,間歇性的502一般認為是由於 PHP-FPM 程式重啟造成的。
在 PHP-FPM 的子程式數目超過的配置中的數量時候,會出現間歇性的502錯誤,如果在配置中設定了max_requests的話,超過數量也會出現502錯誤,而max_requests的設定,正是為了防止不安全的第三方library指令碼的 記憶體洩露 ,當然你自己編寫的指令碼存在 死鎖 的話,也會出現502現象。
如果你發現mysql負載並不高,但是php-fpm的程式數和記憶體佔用過高的話,恭喜你,大多數情況下是因為指令碼存在死鎖。
既然找到了是php的問題,如何去定位php指令碼呢?
開啟php慢查詢日誌:
$ sudo vi /usr/loal/php/etc/php-fpm.conf
; Default Value: 0
request_slowlog_timeout = 1s
; The log file for slow requests
; Default Value: /usr/local/php/log/php-fpm.log.slow
slowlog = /usr/local/php/log/php-fpm.log.slow
預設的 request_slowlog_timeout 是0,php的慢指令碼日誌是關閉的,因此設定為大於0的n,表示執行時間超過n的指令碼將記錄進入slowlog裡。
然後監測到網站存在問題的時候檢視下slowlog即可發現慢指令碼,對指令碼進行檢查處理即可。
2、Mysql的慢查詢日誌
mysql慢查詢日誌對於跟蹤有問題的查詢非常有用,可以分析出當前程式裡有很耗費資源的sql語句,那如何開啟mysql的慢查詢日誌記錄呢?
其實開啟mysql的慢查詢日誌很簡單,只需要在mysql的配置檔案裡(windows系統是my.ini,linux系統是my.cnf)的[mysqld]下面加上如下程式碼:
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2
long_query_time=2中的2表示查詢超過兩秒才記錄.
如果日誌內容很多,用眼睛一條一條去看會累死,mysql自帶了分析的工具,使用方法如下:
$ cd /usr/local/mysql/bin
$ mysqldumpslow –help
-s,是order的順序,主要有c,t,l,r和ac,at,al,ar,分別是按照query次數,時間,lock的時間和返回的記錄數來排序,前面加了a的時倒敘
-t,是top n的意思,即為返回前面多少條的資料
-g,後邊可以寫一個正則匹配模式,大小寫不敏感的
$ mysqldumpslow -s c -t 20 host-slow.log #訪問次數最多的20個sql語句
$ mysqldumpslow -s r -t 20 host-slow.log #返回記錄集最多的20個sql
$ mysqldumpslow -t 10 -s t -g “left join” host-slow.log #按照時間返回前10條裡面含有左連線的sql語句
mysql慢查詢日誌查詢手冊:
間歇性的502,是後端 PHP-FPM 不可用造成的,間歇性的502一般認為是由於 PHP-FPM 程式重啟造成的。
在 PHP-FPM 的子程式數目超過的配置中的數量時候,會出現間歇性的502錯誤,如果在配置中設定了max_requests的話,超過數量也會出現502錯誤,而max_requests的設定,正是為了防止不安全的第三方library指令碼的 記憶體洩露 ,當然你自己編寫的指令碼存在 死鎖 的話,也會出現502現象。
如果你發現mysql負載並不高,但是php-fpm的程式數和記憶體佔用過高的話,恭喜你,大多數情況下是因為指令碼存在死鎖。
既然找到了是php的問題,如何去定位php指令碼呢?
開啟php慢查詢日誌:
$ sudo vi /usr/loal/php/etc/php-fpm.conf
; Default Value: 0
request_slowlog_timeout = 1s
; The log file for slow requests
; Default Value: /usr/local/php/log/php-fpm.log.slow
slowlog = /usr/local/php/log/php-fpm.log.slow
預設的 request_slowlog_timeout 是0,php的慢指令碼日誌是關閉的,因此設定為大於0的n,表示執行時間超過n的指令碼將記錄進入slowlog裡。
然後監測到網站存在問題的時候檢視下slowlog即可發現慢指令碼,對指令碼進行檢查處理即可。
2、Mysql的慢查詢日誌
mysql慢查詢日誌對於跟蹤有問題的查詢非常有用,可以分析出當前程式裡有很耗費資源的sql語句,那如何開啟mysql的慢查詢日誌記錄呢?
其實開啟mysql的慢查詢日誌很簡單,只需要在mysql的配置檔案裡(windows系統是my.ini,linux系統是my.cnf)的[mysqld]下面加上如下程式碼:
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2
long_query_time=2中的2表示查詢超過兩秒才記錄.
如果日誌內容很多,用眼睛一條一條去看會累死,mysql自帶了分析的工具,使用方法如下:
$ cd /usr/local/mysql/bin
$ mysqldumpslow –help
-s,是order的順序,主要有c,t,l,r和ac,at,al,ar,分別是按照query次數,時間,lock的時間和返回的記錄數來排序,前面加了a的時倒敘
-t,是top n的意思,即為返回前面多少條的資料
-g,後邊可以寫一個正則匹配模式,大小寫不敏感的
$ mysqldumpslow -s c -t 20 host-slow.log #訪問次數最多的20個sql語句
$ mysqldumpslow -s r -t 20 host-slow.log #返回記錄集最多的20個sql
$ mysqldumpslow -t 10 -s t -g “left join” host-slow.log #按照時間返回前10條裡面含有左連線的sql語句
mysql慢查詢日誌查詢手冊:
http://outofmemory.cn/wr/?u=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.1%2Fen%2Fmysqldumpslow.html
本文轉自 boy461205160 51CTO部落格,原文連結:http://blog.51cto.com/461205160/1735654
相關文章
- MySQL:慢查詢日誌MySql
- mysql慢查詢日誌MySql
- 關於MySQL 通用查詢日誌和慢查詢日誌分析MySql
- 【MySQL】慢查詢日誌不列印MySql
- mysqlsla 分析mysql慢查詢日誌MySql
- MySQL 慢查詢日誌——讓“慢”無所遁形MySql
- mysql慢查詢和錯誤日誌分析MySql
- 使用慢查詢日誌
- 慢查詢日誌的管理
- mysql之 slow log 慢查詢日誌MySql
- MySQL Slow Query log(慢查詢日誌)MySql
- mysql慢查詢日誌分析工具使用MySql
- Mysql慢查詢日誌分析工具mysqlslaMySql
- 【MySql】 慢日誌查詢工具之mysqlslaMySql
- 開啟mysql和php慢日誌方法MySqlPHP
- MySQL慢查詢日誌相關設定MySql
- 【轉載】MySQL慢查詢日誌總結MySql
- MYSQL開啟慢查詢日誌實施MySql
- mysql開啟檢視慢查詢日誌MySql
- 用命令過濾MySQL慢查詢日誌MySql
- Mysql慢查詢日誌檔案轉ExcelMySqlExcel
- 開啟php-fpm慢指令碼日誌PHP指令碼
- 【MySql】mysql 慢日誌查詢工具之mysqldumpslowMySql
- MySQL資料庫中的日誌檔案---(3)慢查詢日誌MySql資料庫
- 對 MySQL 慢查詢日誌的簡單分析MySql
- 分析mysql慢查詢日誌的好工具--mysqlslaMySql
- MySQL 每天自行統計慢日誌 指令碼MySql指令碼
- 慢查詢日誌開啟分析
- 如何在MySQL中開啟慢查詢日誌?MySql
- mysql分析慢查詢日誌工具mysqlsla安裝MySql
- Mysql 啟動慢查詢日誌 (不用重啟)MySql
- mysql 鎖的慢日誌MySql
- 開啟查詢慢查詢日誌引數
- MySQLSlowlog慢查詢日誌的配置以及清空日誌內容MySql
- Redis慢查詢日誌學習功能Redis
- Linux下mysql配置慢日誌查詢,把查詢慢的sql記錄下來LinuxMySql
- MySQL慢日誌全解析MySql
- mysql開啟慢日誌MySql