背景
在做dispatchsvr发送http请求到业务server的时候,client端设置了1s的timeout,结果当网络出现问题的时候,client出现了大量timeout,并且关闭连接,这时候发现client的cpu和内存有大量增长。
原理
TCP结束的过程如下:
Server Client
-------------- FIN --------------> server: fin_wait_1
<------------- ACK --------------- client: close_wait server:fin_wait_2<

在处理TCP短连接时,遇到客户端因网络问题出现大量超时,导致CPU和内存占用增加。TCP关闭过程涉及FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT等状态,其中TIME_WAIT状态默认持续240秒以防止旧数据包干扰新连接。为解决这个问题,可以通过调整系统内核参数,如设置`tcp_syncookies`、`tcp_tw_reuse`、`tcp_tw_recycle`、`tcp_timestamps`和`tcp_fin_timeout`来优化,减少TIME_WAIT时间,减轻资源消耗。
最低0.47元/天 解锁文章
363

被折叠的 条评论
为什么被折叠?



