这2天遇见一个神奇的事情使用netstat -pan|grep CLOSE_WAIT |wc -l
命令对docker宿主机上CLOSE_WAIT状态统计出来为0,进入到容器内部发现CLOSE_WAIT状态已经600多了。
来吧,操作起来,先研究研究官方文档https://docs.docker.com/compose/compose-file/05-services/如何配置
首先我们需要试着给容器配置以下几个内核参数:
net.ipv4.tcp_keepalive_time = 1800
这个参数定义了在没有任何活动(即数据传输)之后,TCP保活消息开始发送之前的间隔时间。单位是秒。默认情况下,这个值通常是7200秒(2小时)。将其设置为1800秒(30分钟)意味着如果TCP连接在30分钟内没有任何活动,内核将开始发送保活探测消息。
net.ipv4.tcp_keepalive_intvl = 30
这个参数定义了在接收到保活探测的预期响应后,发送下一次保活探测的时间间隔。如果设置为30秒,内核将每隔30秒发送一个探测,直到收到响应或达到探测尝试的最大次数。
net.ipv4.tcp_keepalive_probes = 5
这个参数定义了在放弃连接并将其标记为死亡之前,内核应该发送多少个保活探测消息。如果设置为5,内核将发送最多5个探测消息,每个探测之间间隔tcp_keepalive_intvl指定的时间。