LVS大量快速并发连接后报Connection refused的问题

大致环境:RedHat 4.4, 千兆网,两个结点作为LVS的master与slaver,使用IP tunnel模式,同时用又作real server,大概6,7个real server。
LVS服务器已经进行常规的高性能服务器优化,包括LVS APP的相关配置、tcp 的TIME_WAIT快速回收与重用等等。
使用2个客户端服务器连接LVS的虚拟IP,每个客户端启动8个线程连接LVS集群上特定应用的端口,连接并进行简单数据交互后close,发起和关闭连接比较频繁,每个线程大概都是几十次/秒。

情况如下:
1. 大概跑2,3个小时,客户端总连接次数大概数百万量级后,会发生服务连接虚拟IP 报Connection refused的情况,有时候是2个客户端节点同时拒绝连接,有时候一个被拒,一个可以,但是一段时间后也被拒绝。
2. 连接被拒后,大概等待10分钟左右又可以成功建立连接并继续操作;
3. 连接被拒绝后如果再用第三个客户端节点来连接虚拟IP,可以成功并并发执行;
4. 连接被拒节点如果直接连真实服务器的实际地址与对应端口,可以连接并操作;
5. 连接被拒绝后重启客户端节点的网络 service network restart 可以恢复对LVS的连接;
6. 重启LVS服务可以重新连接。
7. 由于客户端也做过TIME_WAIT的tcp_tw_reuse、tcp_tw_recycle的优化,所以用netstat和ss -s等命令看,服务器与客户端各项数值都不是很大;
8. /proc/sys/fs/file-max等数值在服务端客户端都设置的比较大,服务端设置的是100万,而且在出问题时看/proc/sys/fs/file-nr 时也就一千多。
9. 超时设置是:Timeout (tcp tcpfin udp): 36000 120 300
10. 使用ipvsadm命令看activeConn不是很大,大概每个real server也就3、4左右,inactive连接时高时低,大概3000-8000之间,平均5000吧。
11. lsof看服务端进程没有打开句柄超限的(考虑单进程ulimit -n 1024的限制)

请大虾们不吝赐教,谢谢!

Forums:

是否有服务器防止链接过多的设置,因为myspace在做windows集群的也发生过同样问题

randomness