![Web 服务器在端口 80 上速度很慢,但在端口 81 上速度很快](https://linux22.com/image/548467/Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9C%A8%E7%AB%AF%E5%8F%A3%2080%20%E4%B8%8A%E9%80%9F%E5%BA%A6%E5%BE%88%E6%85%A2%EF%BC%8C%E4%BD%86%E5%9C%A8%E7%AB%AF%E5%8F%A3%2081%20%E4%B8%8A%E9%80%9F%E5%BA%A6%E5%BE%88%E5%BF%AB.png)
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 流量自然会绕过对“正常”网络流量施加的任何限制或特殊条件。