![点击链接后网站冻结 - 无法解释的 ACK 数据包](https://linux22.com/image/659504/%E7%82%B9%E5%87%BB%E9%93%BE%E6%8E%A5%E5%90%8E%E7%BD%91%E7%AB%99%E5%86%BB%E7%BB%93%20-%20%E6%97%A0%E6%B3%95%E8%A7%A3%E9%87%8A%E7%9A%84%20ACK%20%E6%95%B0%E6%8D%AE%E5%8C%85.png)
我们有一个零星的访问网站上的某些内部链接时出现问题。(Windows Firefox、Internet Explorer、Chrome)
行为
第一次点击链接时,浏览器会无限加载。第二次点击同一个链接时,浏览器就会加载成功。
客户
我们在客户端运行的是 Windows 7,并且已经尝试了不同的浏览器(IE11、Firefox 和 Chrome)。Avira Antivirus 在这些客户端上启用了其浏览器安全插件。
Web 服务器
该服务器运行 Debian Jessie、Apache 2.4.10 和 Joomla。
分析网络跟踪
当我们使用 wireshark 跟踪连接时,我们发现 Web 服务器未能对客户端发送的确认做出反应,然后发送了一个 FIN 包,但客户端忽略了该包。客户端继续使用由服务器完成的相同 TCP 连接。
Network-Trace: (all captured within a single tcp session)
1. Client sends ACK
2. Server recieves ACK
3. Server sends FIN-package after 5 seconds
4. Client recieves FIN-package
5. Client ignores FIN-package and continues to send data
6. Server recieves data, sends ACK-package, but no answer on the data
7. The browser session freezes
avira 插件
目前我们知道的是,如果我们禁用 Avira 的浏览器安全插件或排除 URL 监控,则不会发生错误。Avira 已确认该错误,但无法告诉我们何时修复。
问题
无论如何,问题只发生在那web 服务器,所有其他 web 服务器均不受影响。
因此它会受到 Web 服务器上的配置的影响。
我想问一下到目前为止是否有人遇到过类似的错误?
另一个问题是,是否存在有关 Apache 或 TCP 堆栈的设置来禁用 ACK(第 6 点),但这似乎是不正确的。
编辑
typo3 网站也受到了影响。
解决方法:将 apache 上的 keepalive 从 5 秒增加到 90 秒后,错误不再发生。(但我们希望避免如此高的 keepalive)