HTTP 响应时间分析

HTTP 响应时间分析

我有一个 nginx 反向代理。该服务器每秒处理近 600-700 个请求。我有一个 Munin HTTP 加载时间插件,它输出以下内容:

http://monitor.wingify.com/munin/visualwebsiteoptimizer.com/lb1.visualwebsiteoptimizer.com-http_loadtime.html

现在,问题是我在图表中看到了一些峰值。预期响应时间应始终低于 200 毫秒。我一直在关注系统日志和消息,但我无法找出实际原因。我想知道是否有任何好的 HTTP 响应时间分析系统,我可以将其安装/嵌入此 nginx 服务器,并获得有关不同事物所花费时间的详细报告/日志,以及峰值的确切原因。

分析系统还可以帮助我了解瓶颈以及如何进一步优化延迟。

目前最重要的是调查 HTTP 加载时间图表中出现峰值的原因(外部监控器 Pingdom 报告了类似的模式)并修复它以获得一致的响应时间

谢谢

答案1

哇!您如何测量加载时间?据我所知,nginx 只会报告请求响应时间($request_time),这是完全不同的东西。

我已经有几个月没有好好观察过了,但上次检查时发现很少有资料可用于分析响应时间。过去的星期一看起来很有前景。还有像 Client Vantage 这样的商业工具(相当昂贵)。

我最终编写了自己的脚本 - 创建一个简单的 awk 脚本来报告所有超过阈值的命中并不难 - 但请记住,您需要返回并检查 URL 在其余时间的行为。例如

# looking for URLs matching 'example.com/interesting' 
# with URL in $6 and $request_time in $8

BEGIN {}
$6==/example.com\/interesting/ {
  if ( $8>0.3) {
     n[$6]+=1;       # no of hits by URL
     t[$6]+=$8;      # sum of times by url
     s[$6]+=$8 * $8; # sum of sq of times by url
     if (m[$6]<$8) m[$6]=$8; # max time for url
  }
}
END {
   print "url, n, avg, stddev, max";
   for (x in n) {
     print x ", " n[x] ", " t[x]/n[x] ", " sqrt(s[x]-t[x]*t[x])/(n[x]-1) ", " m[x]; 
   }
}

如果您正在测量代理上的响应时间,那么您也在测量通过网络传递请求所花费的时间 - 即您的应用程序可能表现一致,但峰值是由互联网/客户端上的变化引起的。如果您想了解您的应用程序真正在做什么,那么您需要查看您的网络服务器日志。

相关内容