大數據“復活”記
1160
2025-03-31
1. 什么是KeepAlive?
簡單來說,KeepAlive就是為了防止TCP連接中,鏈路斷開,而連接兩端無法偵測到的問題。它的原理其實就是在連接空閑的時候,向對方發送一個空白幀(60 bytes),讓對方應答(54 bytes)。數據來源:wiki
就是說,在連接空閑keepalive-idle(也有叫keepalive-time的,比如微軟)時間后,以keepalive-interval間隔,向對方發送總共keepalive-count幀(也有叫keepalive-retry。微軟叫TcpMaxDataRetransmissions)。如果對方不應答,認為連接已經斷開。
關于此問題的最權威解釋,請參考?IETF的文檔。在其中搜索"TCP Keep-Alives"。
2. 怎么設置
Windows
編碼:
打開或關閉:請參考微軟的MSDN:setsockopt?這個只能設置打開或者關閉keep alive。
具體參數的設置,請參考MSDN里WSAIoctl章節里關于KeepAlive的設置,但是不可修改count值。
微軟里,windows Server 2003, XP, 2000里TcpMaxDataRetransmissions的值被設置為5,可以通過注冊表設置,而Vista以后,這個值被設置為了10,并且不可改。
注冊表:
KeepAliveTime?KeepAliveInterval?TcpMaxDataRetransmissions設置完需要重啟電腦
Linux
系統級:
#?查詢 cat?/proc/sys/net/ipv4/tcp_keepalive_time sysctl?net.ipv4.tcp_keepalive_time
#修改 vim?/etc/sysctl.conf ????net.ipv4.tcp_keepalive_intvl?=?30 ????net.ipv4.tcp_keepalive_time?=?30 ????net.ipv4.tcp_keepalive_probes?=?9 sysctl?-p
代碼級:
很簡單了,見這里
Gauss AP EI企業智能 數據倉庫服務 GaussDB(DWS)
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。