用这个撞墙……
我有一台 Ubuntu Linux 服务器,其上有我们自己的进程,它保存着与外部服务的 40K 个持久连接。
当进程启动时,它会尝试重新连接到 40K 个外部端点。当我在长时间活动后重新启动进程并尝试重新连接时,大多数重新连接因超时而失败。首次重启后大约一小时,连接尝试突然再次成功。
以下是我所知道的情况:
- 由于进程在两次尝试之间重新启动,因此它不可能是进程的内部状态
- 无论我是否重启,外部服务仍然可用。
- 剩下的就是服务器本身
我的理论是,在我们的流程稳定运行期间,Linux 网络堆栈中的某些东西已经达到最大值,并且只有在相当长的超时之后才会被释放。
- 哪些资源可能达到最大值,我该如何验证这种情况?
- 还有其他解释吗?
谢谢!