一、Nginx通过$upstream_response_time
r
e
q
u
e
s
t
t
i
m
e
统
计
请
求
和
后
台
服
务
响
应
时
间
n
g
i
n
x
.
c
o
n
f
使
用
配
置
方
式
:
l
o
g
f
o
r
m
a
t
m
a
i
n
′
request_time统计请求和后台服务响应时间 nginx.conf使用配置方式: log_format main '
requesttime统计请求和后台服务响应时间nginx.conf使用配置方式:logformatmain′remote_addr -
r
e
m
o
t
e
u
s
e
r
[
remote_user [
remoteuser[time_local] “KaTeX parse error: Double superscript at position 12: request" ' '̲status
b
o
d
y
b
y
t
e
s
s
e
n
t
"
body_bytes_sent "
bodybytessent"http_referer” ’ ‘“
h
t
t
p
u
s
e
r
a
g
e
n
t
"
"
http_user_agent" "
httpuseragent""http_x_forwarded_for”’ '$connection $upstream_addr ’ 'upstream_response_time $upstream_response_timerequest_time $request_time ';
r
e
q
u
e
s
t
t
i
m
e
和
request_time和
requesttime和upstream_response_time之间差别:
r
e
q
u
e
s
t
t
i
m
e
包
含
了
用
户
数
据
接
收
时
间
,
而
真
正
程
序
的
响
应
时
间
应
该
用
request_time包含了用户数据接收时间,而真正程序的响应时间应该用
requesttime包含了用户数据接收时间,而真正程序的响应时间应该用upstream_response_time 所以如果用户网络较差,或者传递数据较大时,
r
e
q
u
e
s
t
t
i
m
e
会
比
request_time会比
requesttime会比upstream_response_time大很多 详细参考:
二、Tomcat通过%D或%T统计请求响应时间
server.xml使用配置方式
%D - 官方解释:Time taken to process the request, in millis,处理请求的时间,以毫秒为单位 %T - 官方解释:Time taken to process the request, in seconds,处理请求的时间,以秒为单位 %F - 官方解释:Time taken to commit the response, in millis,提交响应的时间,以毫秒为单位 详细说明:http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Logging
三、通过awk命令辅助统计access.log
1.简单统计nginx访问日志access log每分钟请求数
awk -F: ‘{count[$2":"$3]++} END {for (minute in count) print minute, count[minute]}’ /usr/local/nginx/logs/access.log | sort > count.log
结果如下所示(count.log) 18:30 2086 18:31 2184 18:32 2176 18:33 2122 18:34 2128 18:35 2179 …
参考:http://huoding.com/2013/01/26/215
2.统计请求响应时间超过10s的记录
awk ‘($NF > 10){print $0}’ /usr/local/tengine/logs/cut-log/access_2015-01-12.log >t10_0112.log
更多awk命令统计访问日志参考:http://www.ibm.com/developerworks/cn/linux/l-cn-awk-httplog/