HTTP 响应时间分析

Spa*_*pta 5 http munin nginx response-time

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

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

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

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

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

谢谢

sym*_*ean 6

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

几个月来我一直没有好好看看,但上次我检查时,可用于分析响应时间的内容很少。PastMon看起来很有希望。还有像 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]; 
   }
}
Run Code Online (Sandbox Code Playgroud)

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