高请求时间

我有很高的HTTP请求执行时间(例如13s中的42KB)。

我正在使用haproxy来平衡stream量。 静态文件是由varnish加速器后面的lighttpd服务器。 所以……应该在光速以下服务:P

http://img580.imageshack.us/g/34411388.png/

长DNS查找:pic1

长时间接收:pic2

模拟下载:pic3

我使用GoogleDNS。 这些服务器在美国。 首先,我添加了IP到/ etc / hosts来省略DNS查询。 其次,我将静态移植到单独的机器上,省略了haproxy。 就这样,它直接连接到清漆。 交通不是很大,因为这只是发展,也是在生产中发生的。

http://img580.imageshack.us/g/34411388.png/

更改后:pic4

这个好一点,但还是很慢

首先,你必须检查清漆在哪里服务的形象。 是每次caching图像还是使用后端?

你可以用很多方式检查:

  1. 使用命令行开关来跟踪VCL,确切地看到请求正在做什么( -p vcl_trace=true如果我的内存工作正常。
  2. 使用varnishlog观看图像的一些请求,看看发生了什么(如果它从caching等服务)。 如果你设置了vcl_trace你必须使用它。
  3. 为响应传递添加一个标题并在浏览器上检查它是否是命中或错过。

喜欢这个:

 sub vcl_deliver { if (obj.hits > 0) { set resp.http.X-Cache = "HIT"; unset resp.http.cookie; } else { set resp.http.X-Cache = "MISS"; } } 

它将在Varnish服务的每个请求上添加一个Xcaching头。 在检查清漆确实caching正确之后,我们可以寻找很长时间来回答的原因,但是我认为看清痕迹的请求会给你一些提示。

你可能会被Buffer Bloat击中。