首頁 > Java > java教程 > TCP Keep-Alive 如何防止陳舊的套接字連線?

TCP Keep-Alive 如何防止陳舊的套接字連線?

Mary-Kate Olsen
發布: 2024-10-26 08:42:30
原創
934 人瀏覽過

How Does TCP Keep-Alive Prevent Stale Socket Connections?

TCP 套接字連線是否有「保持活動狀態」?

,TCP 套接字連接有一個超時機制,稱為TCP 保持活動。它可以防止套接字連接無限期地保持開啟狀態,解決一側終止連接而不通知另一側的情況。

TCP 保持活動進程

TCP 保持活動可以透過以下方式在Linux 上設定屬性:

  • tcp_keepalive_time(預設:7200 秒)
  • tcp_keepalive_probes(預設:9)
  • tcp_keepalive_intvl(預設:75 秒)

這個過程涉及定期發送空的ACK 封包,直到收到回應。如果在指定次數的探測後沒有收到回應,則連線終止。

實作說明

Keep-Alive 封包是可選的,可能無法可靠傳輸。然而,實際上,大多數作業系統和雲端提供者都支援此機制。

更改TCP 逾時

每個套接字配置(Java 11 及更高版本):

Java 11 引入了使用本機程式碼在每個套接字層級配置TCP 逾時的功能。

系統範圍配置:

對於舊版的 Java 和在其他作業系統上,您可能需要在系統層級套用逾時設定。

Linux:

# Echo commands to modify the values in /proc
echo 180 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes
echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl
登入後複製

Mac OS X:

# Use sysctl to modify values
sysctl -w net.inet.tcp.keepidle=180000 net.inet.tcp.keepintvl=10000 net.inet.tcp.keepcnt=3
登入後複製

Windows

WindowsWindows 登錄項目:HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters

以上是TCP Keep-Alive 如何防止陳舊的套接字連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板