是否有任何方法来解除先前被某个时间崩溃的程序绑定的端口?我不喜欢每小时重新启动开发机器。
发布于 2016-07-08 10:54:35
当程序有连接,并且在您终止进程之后,可以定义一个超时,以便端口停留。
要更改超时的相关内核变量是:
来自:Linux调优
/proc/sys/net/ipv4/tcp_tw_reuse--从协议的角度来看,这允许在TIME_WAIT状态下重用新连接的套接字。默认值为0(禁用)。/proc/sys/net/ipv4/tcp_fin_timeout-此设置确定在TCP/IP能够释放关闭的连接并重用其资源之前必须经过的时间。在此TIME_WAIT状态期间,重新打开到客户端的连接比建立新连接的成本低。通过减少此条目的值,TCP/IP可以更快地释放关闭的连接,从而为新连接提供更多的资源。
您可以通过以下方式临时更改它:
sudo sysctl -w sudo sysctl -w net.ipv4.tcp_fin_timeout=30
sudo sysctl -w sudo sysctl -w net.ipv4.tcp_tw_reuse=1或永久添加配置,编辑/etc/sysctl.conf并添加:
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_tw_reuse=1因此,它也将在启动时应用。
如需进一步指导,请阅读:缩短时间_等待套接字连接
在应用程序级别,您还可以在打开这个帖子时指定SO_REUSEADDR:https://stackoverflow.com/questions/767292/how-do-i-close-a-port-in-a-case-of-program-termination。
正如dr01所述,另一种选择是手动执行:
service networking restarthttps://unix.stackexchange.com/questions/294616
复制相似问题