在Apache服务器上处理来自特定IP的静态内容的处理时间非常长(> 300s)

我们正在为一个非常大的网站运行Apache 2.2服务器。 在过去的几个月里,我们有一些用户报告的响应时间很慢,而另外一些用户(包括我们在内部networking和家庭networking上的资源)却没有看到任何性能下降。

经过大量的调查,我们终于在我们的configuration中发现了一个“拒绝从零”的声明,导致反向DNS查询(已超时),解决了我们的大部分问题,但是我们仍然看到一些客户Apache日志(在日志格式中使用%D),请求处理时间大于300s的图像,CSS,JavaScript和其他静态内容。

我们已经检查了所有拒绝/允许声明,以重新发生“无”,以及我们所知道的会导致反向DNS查找的所有其他事情(例如在重写规则中使用“REMOTE_HOST”,使用%a而不是%h我们的日志格式configuration)以及validationHostnameLookups设置为“关”。

顺便说一下,我们也validation了反向DNS查找有这个问题的人不会超时 – 所以我相当确定的DNS在这种情况下不是一个问题。

我已经用完了想法。 是否有任何Apache的configuration场景,有人可以指出,我可能会错过这将导致静态内容的请求时间只有特定的用户这么长时间?

先谢谢你。

当我find这样的事情时,我首先检查:

  1. DNS。 使用像tcpdumpwireshark这样的networking转储来检查这一点,而不仅仅是目测configuration文件。 如果你确定这不是问题,
  2. traceroute / ping对于这些用户来说是什么样的? 他们都有自己的共同点吗? 我看到一个不好的NAT盒子导致悲伤的结束。 我也看到一个用户的本地stream量导致我的网站显示比没有加载连接的其他网站,但他们通知我的速度缓慢。
  3. 防火墙/隧道。 他们在做一些愚蠢的事情,像阻止所有的ICMP? 他们在隧道上吗? 如果对两者都是,那么很可能是PMTU发现以某种奇怪的方式超时。

请注意,300s的响应时间可能意味着Apache放弃了它们,而不是它被服务。 5分钟是服务器等待的很长时间,但对于客户来说,等待这么长时间更为疯狂。