- 论坛徽章:
- 33
|
回复 5# upandup
我说的是 tcp 的 keepalive , 跟你的应用没关系.
我了解的也有限, 只能简单的说, 正常的tcp的连接的建立和断开, 都是有相应的包(syn/fin) 来通知的, 所以, 通信双方会各自关闭的自己的连接. 但在特定的情况下, 双方的通信可能在中途就中断了, 无法再继续, 这可能是由于网络故障, 或者一方主机的故障引起的. 这时在非故障一方的, 由于没有收到任何的通知, 它就会有一个 EST 状态的 连接挂在这里. 在tcp的协议里, 为了避免这样的连接持续下去, 有一个 超时, 就是 tcp_keepalive_time. 在 Linux上, 这个值比较长, 7200秒. 所以, 要等到 7200秒之内没收到任何数据, OS才会认为这个连接可能已经有了问题, 于是会发起探测(probe), 默认的probe 次数是9次, 间隔是75秒,
所以, 一个EST的连接(无数据接收), 大约会在 7200 + 9 * 75 = 7875秒之后断开.
我说的调整 keepalive, 就是要减小这个 keepalive tiime, 与 应用无关.
希望我的理解是正确. 楼主可以查一下tcp的相关协议, 我的英文太烂, 看不懂那些xxoo. |
|