持续存在的TCP连接超时 – 侦听器队列积压?

我有一个在AIX 6.1上运行的应用程序,它具有单个服务器进程,用于监听和轮询tcp连接,并使用IPC消息队列简单地将消息转发到另一个进程。 它已经服务了好几年,经常处理1000个或更多的连接,没有问题。 但是,昨天我们遇到了一个连接到这台服务器的时间很长的情况。 同时连接到这个服务器的另一个实例(在同一台机器上监听不同的端口号)工作正常。 此外,数据stream过现有的连接是好的,处理器负载很小。

这种情况持续了好几个小时,甚至在重新启动有问题的听众之后仍然继续发生。 然后今天早上突然间,它清理了,一切正常。

真正奇怪的是,来自运行在同一台服务器上的客户端进程的内部连接也被延迟,偶尔会超时。

有什么方法可以阻止连接请求从networking某处发生故障连接,从而使服务在长时间内无法为所有人所用 – 同样可以快速清理并开始正常工作? 而这只是影响新的连接 – 不是由同一进程处理现有的套接字?

谢谢,罗布

注 – 我们可能已经解决了这个问题。 看起来有一个networking位置正在实现部分连接(也许入站数据包可路由,但不是出站)。 在任何情况下,SYN_RCVD状态下都有一堆连接,服务器的监听套接字上的“backlog”参数只有5个,所以试图从不良位置连接的用户群足以吞噬整个可用的backlog而不是让其他任何人进来 – 我猜想,直到部分连接超时。

所以,我想我会修改我的问题,只是问什么是一个好的经验法则,设置“Backlog”参数listen()。 现在我已经把它从5个变成了20个,但是我们一起生活了5年,没有任何问题。