Apache 在响应之前有很长的延迟

Apache 在响应之前有很长的延迟

我在 CentOS 上有一个 Apache 服务器,它偶尔需要 1-5 秒才能处理一个文件,包括一个只有 2 个字符的文本文件。我有一个 JMeter 测试,它获取了几种不同类型的文件,延迟通常发生在它首先抓取的任何文件上,但并非总是如此。无论是并行还是顺序的多个请求,都是如此。它实际需要处理的页面是 PHP/Oracle,但我假设问题不在代码中,因为 PHP 没有解析文本文件(我确实证实了这一点)。

  • HostnameLookups 已关闭。我 grep 了 /etc/httpd 以确认我已将其全部根除。
  • 网络内和网络外的人都会感受到延迟。
  • 如果我从服务器内部运行 wget,它本身也会出现滞后,这让我认为这不是 DNS 问题。
  • 当我使用 Apache Bench 查看它时,它显示连接和处理过程中都存在滞后。
  • 我从未见过 ping 有如此滞后的情况。
  • 我们临时给防火墙添加了一个例外,但是当发现没有什么变化时就恢复了它。
  • 我根据此处给出的公式设置了 MaxClients (https://servercheck.in/blog/3-small-tweaks-make-apache-fly
  • 该服务器支持 SSL,但我进行的测试通常通过 HTTP 进行。偶尔我会通过 HTTPS 进行测试,其速度通常与安全性较低的 HTTPS 相当。
  • 我正在使用 AllowOverride 来解析 .htaccess 文件,但是当我禁用它并测试时,我仍然看到相同的滞后。
  • httpd.conf 中隐藏着极少的“不允许所有/拒绝所有”设置
  • 我仍在研究 Apache MPM 和 valgrind。

一些相关的 Apache 设置:

启动服务器 8
最小备用服务器数 5
最大备用服务器数 20
服务器限制 256
最大客户数 136
每个子项的最大请求数 4000

这是获取文本文件的五秒等待时间的屏幕截图。wget 报告事务花费了 0 秒,但您可以看到开始和结束时间相隔 5 秒。 JMeter 结果 ab 结果似乎没有什么帮助,但我可能无法正确解释它们。

我参考过的一些资源:

任何帮助我都会非常感激。谢谢。

答案1

一位同事向我指出这一页建议将以下内容添加到 /etc/resolv.conf:

options single-request-reopen

我不确定这是否解决了问题,或者这是我尝试的几种方法的组合,但其他访问资源的人表示在我添加这个之后速度明显加快了。我希望这对其他人有帮助。

答案2

Latency在您的 JMeter 视图结果表监听器中提及。

按照负荷报告

延迟 (LATENCY) 是您的请求到达服务器所需的延迟。

我建议检查你的网络配置,最好的选择可能是地铁工具。

使用 MTR 诊断网络问题指南了解更多详情。

相关内容