telnet 服务器端口不通的一种解决方式(高并发)

博客讲述了在Kubernetes集群中遇到的一个服务访问问题,表现为不同节点的服务对同一服务器的访问结果不一致。当并发量增加时,telnet连接会失败。作者通过排查排除了应用层和防火墙、iptables等因素,最终发现是TCP连接重用和时间戳导致的问题。通过检查和修改tcp_tw_recycle参数解决了问题。
摘要由CSDN通过智能技术生成

前文

今天被一个bug给困扰,k8s集群上,不同节点的同个服务访问同一台服务器结果不同,区别在于如果同节点的并发量一旦上去,在该节点上去telnet对应服务器的80端口,会不通。

排查

因为是telnet直接不通,所以可以否定是应用层的拦截,定位在tcp层拦截,逐一排查防火墙、iptables等都未做拦截,并且注意到是当并发数上去后才会出现失败,继而通过抓包定位到当发往目标服务器三次握手是,即syn,目标服务器不会答复ack,而这边会不断重试(Retransmission)

结论

翻到一篇,写的很适合,直接饮用:https://codeantenna.com/a/7f71g3pzce

本质上两条命令确认是否是tcp连接重用,然后因为时间戳的原因导致后续的连续都被抛弃了:

查看是否又因为时间戳丢包的情况
netstat -s | grep timestamp

接着:

查看tcp复用连接是否开启
cat /proc/sys/net/ipv4/tcp_tw_recycle

将其改成0, sysctl -p使其生效后,问题解决

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值