Linux

解綁崩潰程序的埠

  • July 8, 2016

有什麼方法可以取消綁定以前由某個程序崩潰的程序綁定的埠?我不喜歡每小時重新啟動開發機器。

當程序有連接時,在你終止程序後,可以為埠定義一個超時時間。

更改超時所涉及的核心變數是:

來自:Linux TCP 調整

/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

因此,它也將在啟動時應用。

如需進一步指導,請閱讀:減少 TIME_WAIT 套接字連接

在應用程序級別,您還可以在打開襪子時根據這篇文章指定 SO_REUSEADDR:https ://stackoverflow.com/questions/767292/how-do-i-close-a-port-in-a-case-of-程序終止

正如 dr01 所說,另一種選擇是手動進行:

service networking restart

引用自:https://unix.stackexchange.com/questions/294616