我有一台 Win 2012 R2 / IIS 8.5 服务器,两年来一直运行着一些面向公众的生产网站。
今天,大约 6 个小时后,它开始随机丢弃所有网站的 80 端口请求(但不会丢弃 443 端口请求)。我可以使用 Telnet 客户端轻松测试 80 端口。大约有一半的时间,Telnet 无法连接:
C:\Users\bob>telnet www.foo.com 80
Connecting To www.foo.com...Could not open connection to the host, on port 80: Connect failed
我使用 Wireshark 观察了这些尝试,发现在这些情况下,服务器几乎立即通过 TCP 重置响应初始客户端数据包。
为了(大部分)消除网络问题,我尝试在实际的 Web 服务器上从命令提示符进行 telnet 测试,并且能够以大约相同的频率重现该问题。
今天没有对此服务器进行重大更改。我做过2 天前将常规的 Patch Tuesday 补丁应用于此机器,但在其他 10 个获得相同补丁的 Web 服务器上没有看到类似问题。重新启动 IIS 服务、回收应用程序池并重新启动操作系统均未解决问题。
6 小时后,问题神奇地消失了,我不知道为什么。但是,如果再次发生这种情况,我该如何调试 TCP/IP 堆栈和/或 IIS 以找出这些连接触发 TCP 重置的原因?