Linux
解綁崩潰程序的埠
有什麼方法可以取消綁定以前由某個程序崩潰的程序綁定的埠?我不喜歡每小時重新啟動開發機器。
當程序有連接時,在你終止程序後,可以為埠定義一個超時時間。
更改超時所涉及的核心變數是:
來自: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