我正在构建一个服务,通过TCP套接字定期连接到大量设备(数千个) . 这些连接都是同时 Build 的,每个都发送了几个api命令,然后关闭套接字 . 所有设备都在同一子网中 .

麻烦在大约1000台设备之后开始 . 未 Build 新连接 . 等了几分钟后,一切都恢复正常了 . 我的第一个猜测是已达到套接字连接的最大数量,在阅读了许多类似的问题和教程后,我修改了一些内核网络参数,如各种缓存大小,最大打开文件数, tcp_tw_reuse ,_ somaxconn . 不幸的是,它几乎没有效果 .

这个问题似乎与爆破无关:第一次运行脚本时,它运行正常,但是当我几分钟后再次启动它时,我就开始看到这些错误了 . 我最好的猜测是,随着时间的推移,开放套接字的数量会增加,可能是在 TIME_WAIT 状态 . 另一方面,设置 tcp_tw_reuse 参数(这对于这种情况来说似乎是完美的)没有任何明显的效果 . 我通过pythons socket.close()关闭套接字 .

重要的是要强调这个问题不是关于高负载服务器,而是高负载客户端!连接是外向的 . 我看到了许多与服务器相关的问题,这些问题已通过上述解决方案得到了解答