Socket 服务器在一段时间后停止接受连接

Rob*_*Rob 4 .net c# sockets

我们有一个用 C# 编写的异步套接字服务器。(在 Windows Web Server 2008 上运行)

它可以完美地工作,直到由于未知原因停止接受新连接为止。

我们平均有大约 200 个并发连接,但是我们会记录创建的连接和删除的连接的计数。这些数字最高可达 10,000,最低可达 1000,然后就停止了!它有时可以运行大约 8 小时,然后才会停止,或者可以运行大约半小时,目前它运行大约一个小时,然后我们让另一个应用程序在无法连接时自动将其备份(不完全是这样)理想的)。

看起来我们并没有耗尽套接字,因为我们正确关闭了它们,我们还记录了所有错误,并且在停止之前没有任何反应。

我们可以弄清楚这一点。有人知道可能会发生什么吗?

我可以粘贴代码,但它通常只是您在各处看到的相同的旧异步开始接受/发送代码。

Len*_*ate 5

谁发起主动关闭,客户端还是服务器?如果是服务器,那么您可能会TIME_WAIT在服务器上累积套接字的状态,这可能会阻止您接受新连接。如果客户端连接可能是短暂的,并且您经历了发生大量短暂客户端连接的时期,则更有可能出现这种情况。

哦,如果您正在累积套接字,TIME_WAIT那么请不要仅仅假设更改机器范围的时间等待周期长度是最好或唯一的解决方案。