Apache - 资源随机挂起(导致页面加载缓慢)

时间:2013-11-28 17:47:23

标签: apache ubuntu digital-ocean

资源的HTTP请求随机 - 大约1-5%的时间(每个资源,而不是每页加载) - 需要很长时间才能传送到浏览器(约20秒),甚至不会无限期地挂起。 (服务器详细信息列在底部的列表中。)

由于JavaScript资源悬挂在<head>标记内,导致任何网页的每5个请求似乎都会挂起。

资源是css,js和小图像文件,由apache直接提供(没有脚本语言),尽管页面加载(涉及PHP或Rails)也很少挂起,与其他任何资源相同(1-5%)时间),所以这似乎是与Apache Request相关的问题。

其他信息:

  • 我在server-status检查了闲置工人,正如预期的那样,我仍有98%的闲置工人。虽然这可能是相关的,因为挂钩适用于FastCGI不提供的静态资源(资源是静态的)。
  • 我不是唯一有这个问题的人。其他人也有同样的问题,来自不同的IP地址。
  • 这种情况在Google Chrome和Firefox中都会作为HTTP客户端发生。
  • 我一直试图在新标签中强制刷新相同的JS文件。它最终导致了同样的悬挂。
  • Google Chrome的“时间”标签报告等待34毫秒,其中一个挂起请求收到19.27秒。这是否意味着Apache已经准备好了文件内容,只是在合理的时间内无法提供它?
  • error.log不显示任何错误。 error.log中有一些预期的404和500错误,但这些错误与挂起无关;这些是不存在的页面和PHP致命错误的实际错误。
  • 我得到一些可疑的206部分内容响应主要是针对静态内容,尽管挂起的次数比那些部分内容更频繁。我大多在各地获得200 OK响应,我可以确认无限期挂起在apache access.log中报告为200 OK的资源。
  • 我为Redmine安装了mod_passenger。我不知道这是否有帮助,但可疑的是这台服务器安装它不像我使用的所有其他服务器。虽然mod_passenger不应该影响静态内容,特别是不在非ruby项目文件夹中,是不是应该?
  • 服务器在Ubuntu 13.10上使用Apache 2.4 Event MPM,托管在Digital Ocean上。

可能导致这些挂钩的原因以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,所以在阅读了这个thread后,我尝试在我的apache配置中设置KeepAlive Off,这似乎有所帮助 - 所有资源现在都在等待。

不是一个很好的“修复”,但至少我更接近找出原因,并且页面不会花费15秒来完全加载。