我们的应用程序包含一个 ASP.Net Web 服务,该服务只需要处理少量客户端。因此,Windows XP Pro 的 10 个传入连接限制通常不是问题。但是,在一台特定的服务器上,连接偶尔会卡在 CLOSE_WAIT 状态。这些连接会随着时间的推移而建立,最终新的客户端连接会被拒绝,因为最大连接数已用完。
从我的谷歌搜索来看,Web 服务未能正确关闭连接可能会导致此问题,但由于它在数百台其他 Windows XP pro 机器上运行良好,因此我看不出这是我们代码中的错误。它在受影响的机器上运行良好,直到最终用户出现一些恶作剧(我认为他们开始删除重复文件以减少磁盘使用量,但他们并没有完全坦白这一点)。
用户可能进行了哪些更改以导致此问题? 有什么方法可以强制处于 CLOSE_WAIT 状态的连接超时,而不是让它们挂起? 我见过减少 TcpTimedWaitDelay 的建议,但这仅与 TIME_WAIT 状态有关,更改它没有任何效果。
答案1
此类问题通常与需要关闭和处置的对象的代码有关,但您的故事表明这种情况并非如此。我会在网站的“网站”选项卡上检查您的连接超时。默认值为 120 秒。如果已提出该问题,则它可能比其他机器保留更多的连接。
另外,请检查 IIS 日志,查看是否有异常流量。如果有机器人或其他程序更频繁地访问您的网站,则您可能比过去更早达到连接限制。