【问题描述】CLB后端的CVM端口健康检查偶尔异常、客户端访问clb偶尔超时
【排查步骤】 1、健康检查探测机制是clb的vip向后端cvm业务进行探测,所以先在cvm上抓包看是否有收到探测包
2、通过cvm网卡上抓包看有收到clb vip的探测包,但是没有回包导致重传(193是clb vip 172是cvm的内网ip)
3、所以需要排查下rs为什么不回包,因为看抓包文件偶尔也会回包,所以肯定不是cvm有系统防火墙和安全组等限制
4、查看客户有开启快速回收参数sysctl -a |grep -E 'timestamp|reuse|recycle' 可能是开启参数导致的子机不回包,如果同时开启了 TCP 的快速回收(tcp_tw_recycle)和时间戳(tcp_timestamps)可能导致异常,原因分析请参考文档https://cloud.tencent.com/document/product/214/10328#.E5.8E.9F.E5.9B.A0.E5.88.86.E6.9E.90
5、实锤下到底是否快速回收参数导致的问题,可以用如下命令先执行1次 date; nstat -r | egrep -i "drop|error|failed|error|timeout|overflow|paws"
间隔几分钟再执行1次
5、可以看到 TcpExtPAWSPassive 这个值在增长,说明是由于开启时间戳导致的子机网络性能下降,引起丢包。
6、建议关闭tw_recycle参数:
tw_recycle在很多场景下对业务是有损的,尤其是client 在nat环境后面的时候,建议所有的cvm关闭该选项,并且最新的内核4.1以后也不再支持tw_recycle逻辑,后续开启也无效。最新内核删除说明:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4396e46187ca5070219b81773c4e65088dac50cc 7、临时生效:echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle
永久生效:需要修改/etc/sysctl.conf ,添加
net.ipv4.tcp_tw_recycle = 0
sysctl -p 生效
开启快速回收参数可能也会导致下面问题:
1、远程登录linux服务器偶尔不通
2、客户端访问clb时偶尔不通