nginx模塊ngx_http_log_request_speed能夠用來找出網站哪些請求很慢,針對站點不少,文件以及請求不少想找出哪些請 求比較慢的話,這個插件很是有效.做者的初衷是寫給本身用的,用來找出站點中處理時間較長的請求, 這些請求是形成服務器高負載的很大根源. 日誌記錄以後,在使用perl腳本分析日誌,便可知道哪些請求須要修正. php
目前已經使用這個模塊找出了不少有問題的程序,服務器性能也相對應的提高了許多。 html
1. 模塊安裝
nginx第三方模塊安裝方法,咱們ttlsa.com已經說過不少次了,我這邊不在重複了。
配置參數 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 ajax
log_request_speed_filter
語法: log_request_speed_filter [on|off]
配置段: n/a
context: location, server, http
啓動或禁用模塊 bash
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 日誌分析 this
cd /usr/local/nginx-1.4.1/logs wget http://wiki.nginx.org/images/a/a8/Log_Analyzer.tar.gz tar -xzvf Log_Analyzer.tar.gz cd 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: 2 GET /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,目前使用正常,在使用前請你們先測試一下。
5. 結束語
首先很感謝做者寫的這個簡單實用的nginx插件,這個插件的目的不單單是記錄請求的響應時間,並且是用來找出響應慢的請求。若是你的服務器上有大量的站點,或者大量的程序文件,可是訪問量不高,負載卻很高,你想找出是哪一個請求慢,我想這個插件很是適合你。
參考地址
ngx_http_log_request_speed下載地址:http://wiki.nginx.org/images/7/78/Ngx_http_log_request_speed.tar.gz
ngx_http_log_request_speed腳本地址:http://wiki.nginx.org/images/a/a8/Log_Analyzer.tar.gz
轉載請註明出處:http://www.ttlsa.com/html/3244.html