nginx記錄分析網站響應慢的請求(ngx_http_log_request_speed)
nginx模塊ngx_http_log_request_speed可以用來找出網站哪些請求很慢,針對站點很多,文件以及請求很多想找出哪些請求比較慢的話,這個插件非常有效.作者的初衷是寫給自己用的,用來找出站點中處理時間較長的請求, 這些請求是造成服務器高負載的很大根源. 日志記錄之后,在使用perl腳本分析日志,即可知道哪些請求需要修正.
1. 模塊安裝
nginx第三方模塊安裝方法這里就一筆略過了。
配置參數
./configure --prefix=/usr/local/nginx-1.4.1 --with-http_stub_status_module / --add-module=../ngx_http_log_request_speed
2. 指令log_request_speed
2.1 log_request_speed_filter
語法:
log_request_speed_filter [on|off]
配置段: n/a
context: location, server, http
啟動或禁用模塊
2.2 log_request_speed_filter_timeout
語法:
log_request_speed_filter_timeout [num sec]
默認: 5秒
配置段: location, server, http
這邊并不是真正意義的超時,而是說當請求超過這邊給定的時間,將會記錄到nginx錯誤日志中. 默認值是5000微秒(5秒),如果一個請求小于5秒,這個請求不會被記錄到日志中,但是如果超過5秒,那請求將會被記錄到nginx的錯誤日志中
3. 使用實例
3.1 nginx配置
http{ log_request_speed_filter on; log_request_speed_filter_timeout 3; ...}
錯誤日志中記錄的慢請求如下
3.2 日志分析
cd /usr/local/nginx-1.4.1/logswget http://wiki.nginx.org/images/a/a8/Log_Analyzer.tar.gztar -xzvf Log_Analyzer.tar.gzcd request_speed_log_analyzer# cat ../error.log | grep 'process request'| ./analyzer.pl -r
POST /wp-admin/admin-ajax.php HTTP/1.1 --- avg ms: 1182, value count: 2GET /shmb/1145.html HTTP/1.1 --- avg ms: 2976, value count: 1 <--- THE WINNER
從日志中,我們發現這邊有2條請求比較慢,最慢的是/shmb/1145.html ,而且還標示“THE WINNER”,作者你贏了。很幽默。
3.3 分析腳本語法
# ./analyzer.pl -h-h : this help message # 顯示幫助信息 -u : group by upstream # 按upstream分組 -o : group by host # 按主機分組 -r : group by request # 按請求分組,推薦這個
4. nginx測試版本
目前作者只在0.6.35和0.7.64下測試,不保證其他環境下可以使用。我當前的測試版本是1.4.1,目前使用正常,在使用前請大家先測試一下。
nginx替換網站響應內容(ngx_http_sub_module)
ngx_http_sub_module模塊是一個過濾器,它修改網站響應內容中的字符串,比如你想把響應內容中的‘jb51'全部替換成‘錯新站長站',這個模塊已經內置在nginx中,但是默認未安裝,需要安裝需要加上配置參數:--with-http_sub_module
新聞熱點
疑難解答