在 Ubuntu 14.04 上,应用程序以每秒 1 次到每分钟 1 次的间隔与客户端通信。但是,服务必须定期重新启动,这会导致所有连接断开/超时。服务重新启动仅需大约 10-15 秒。
是否可以调整系统使得这些连接在服务重新启动时不会超时/断开?
$ ulimit -n
1048576
$ cat /proc/sys/net/ipv4/tcp_fin_timeout
60
$ cat /proc/sys/net/ipv4/tcp_tw_recycle
0
$ cat /proc/sys/net/ipv4/tcp_tw_reuse
0
答案1
简而言之,没有。
重新启动服务时,必须终止保持套接字文件描述符打开的进程。假设这些是 TCP 会话,则意味着在服务重新启动并且新进程再次监听套接字后,必须完成 TCP 会话 (FIN) 并建立新会话 (SYN)。
为什么需要重启服务?不需要。解决这个问题,问题就解决了。