- 論壇徽章:
- 33
|
回復 5# upandup
我說的是 tcp 的 keepalive , 跟你的應用沒關系.
我了解的也有限, 只能簡單的說, 正常的tcp的連接的建立和斷開, 都是有相應的包(syn/fin) 來通知的, 所以, 通信雙方會各自關閉的自己的連接. 但在特定的情況下, 雙方的通信可能在中途就中斷了, 無法再繼續(xù), 這可能是由于網絡故障, 或者一方主機的故障引起的. 這時在非故障一方的, 由于沒有收到任何的通知, 它就會有一個 EST 狀態(tài)的 連接掛在這里. 在tcp的協(xié)議里, 為了避免這樣的連接持續(xù)下去, 有一個 超時, 就是 tcp_keepalive_time. 在 Linux上, 這個值比較長, 7200秒. 所以, 要等到 7200秒之內沒收到任何數(shù)據, OS才會認為這個連接可能已經有了問題, 于是會發(fā)起探測(probe), 默認的probe 次數(shù)是9次, 間隔是75秒,
所以, 一個EST的連接(無數(shù)據接收), 大約會在 7200 + 9 * 75 = 7875秒之后斷開.
我說的調整 keepalive, 就是要減小這個 keepalive tiime, 與 應用無關.
希望我的理解是正確. 樓主可以查一下tcp的相關協(xié)議, 我的英文太爛, 看不懂那些xxoo. |
|