Web 服务器在端口 80 上速度很慢,但在端口 81 上速度很快

Web 服务器在端口 80 上速度很慢,但在端口 81 上速度很快

Apache 正在监听端口 80。

我有一个脚本,用于对小型静态图像执行 curl 并计算响应时间。通常需要 0.04 秒,但 10 个请求中有 6 个需要 2 到 20 秒。

如果我将端口更改为 81,所有请求都会很快。

你知道是什么原因造成这样的事情吗?

编辑:另一件奇怪的事情是“telnet 127.0.0.1 80”通常需要 3-20 秒。端口 81 立即响应。

答案1

Apache 有多忙,您的设置是多少MaxClients?如果您收到大量传入请求并且 MaxClients 较低,那么一些请求将被延迟,直到 Apache 子线程最终可用于处理它。您可以启用mod_status实时查看 Apache 请求以及每个子进程正在做什么。它应该会很快告诉您所有子进程是否忙碌。

如果是特定端口 80 的问题,您可以检查iptables --list是否有任何端口 80 相关规则可能发挥作用。问题也可能出在您的客户端和服务器之间(或您的客户端本身)。尝试在服务器上本地执行一些基准测试,看看是否存在任何类似的性能问题。

答案2

这几乎肯定是网络问题,而不是 Apache 配置问题。

端口 80 流量可能正在您和目标系统之间的某个地方被过滤或排队。也许有代理或其他缓存服务器在运行。端口 81 流量自然会绕过对“正常”网络流量施加的任何限制或特殊条件。

答案3

这是一次 SYN 洪水攻击。检查方法是发出

ss -t -a |grep SYN-RECV

我通过启用解决了这个问题SYN cookie

答案4

您是否关闭了 Apache 中的主机名查找?

HostnameLookups Off

无关,但这可能有助于你了解基础知识Apache 优化

相关内容