這兩天伺服器網路不穩定,結果發現了乙個現象:乙個tcp連線的服務端(windows)早已停止,而客戶端(linux)的連線狀態卻一直保持為established,直到第二天中午連線才斷開。在網上搜一下,才知道tcp的相關設定:
#cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
#cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75#cat /proc/sys/net/ipv4/tcp_keepalive_probes
9意思是如果某個tcp連線在idle 7200秒(2個小時)後,核心才發起probe.如果probe 9次(每次75秒)不成功,核心才徹底放棄,認為該連線已失效。
2*9=18小時,這就是為什麼前一天下午網路出問題,到第二天中午那個連線才顯示關掉。
下面轉一點詳細的知識:
const void *optval, socklen_t optlen)
TCP連線狀態 如何判斷乙個TCP連線是否可用
在使用乙個長連線的tcp時,如果tcp伺服器端接收到tcp的客戶端連線過來後,接著伺服器端的tcp節點需要對這個客戶端進行資料收發,收發時需要判斷這個socket是否可用用,判斷方法有多種 1.linux的5種方法,本人在使用modbus伺服器端判斷已經連線的裝置或是gprs伺服器對已經連線的gpr...
TCP連線狀態 如何判斷乙個TCP連線是否可用
在使用乙個長連線的tcp時,如果tcp伺服器端接收到tcp的客戶端連線過來後,接著伺服器端的tcp節點需要對這個客戶端進行資料收發,收發時需要判斷這個socket是否可用用,判斷方法有多種 1.linux的5種方法,本人在使用modbus伺服器端判斷已經連線的裝置或是gprs伺服器對已經連線的gpr...
如何判斷乙個執行緒的存活
pthread kill 別被名字嚇到,pthread kill可不是kill,而是向執行緒傳送signal。還記得signal嗎,大部分signal的預設動作是終止程序的執行,所以,我們才要用signal 去抓訊號並加上處理函式。int pthread kill pthread t thread,...