我在 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
我参考过的一些资源:
- Apache / PHP 服务器延迟一分钟才响应
- Centos/Windows Apache 网络滞后
- 提供文件之前 Apache 中的随机滞后
- http 响应缓慢
- 为什么本地主机的响应这么慢?
- PHP + Apache 等待时间过长
任何帮助我都会非常感激。谢谢。
答案1
一位同事向我指出这一页建议将以下内容添加到 /etc/resolv.conf:
options single-request-reopen
我不确定这是否解决了问题,或者这是我尝试的几种方法的组合,但其他访问资源的人表示在我添加这个之后速度明显加快了。我希望这对其他人有帮助。
答案2
Latency
在您的 JMeter 视图结果表监听器中提及。
按照负荷报告
延迟 (LATENCY) 是您的请求到达服务器所需的延迟。
我建议检查你的网络配置,最好的选择可能是地铁工具。
看使用 MTR 诊断网络问题指南了解更多详情。