Linux网络优化踩坑net.ipv4.tcp_tw_recycle

一、背景

来源于埋点上报服务,埋点上报服务是用户打开APP后点击、浏览、曝光等数据都会上报到埋点服务,收集数据后用来公司运营。

本次踩坑来源于监控到上课高峰期net.sockets.tcp.timewait达到系统设置的最大值5000,为了降低高峰期timewait数量,参考网上介绍可以调整三个参数来降低timewait。

 

二、修改参数

1、root用户修改参数vim /etc/sysctl.conf

参数1:修改timewait阈值,默认5000,建议最大不超过5万,太高会影响系统其它服务

net.ipv4.tcp_max_tw_buckets=30000

参数2:开启快速回收,这个参数有坑,遇到的问题是这个参数引起,在下面说明

net.ipv4.tcp_tw_recycle=1

参数3:允许将TIME-WAIT sockets重新用于新的TCP连接,默认关闭。我们系统上默认开启,并且稳定,所以不用修改

net.ipv4.tcp_tw_reuse=1

2、使修改生效

sysctl -p

 

三、修改后现象

1、java后端(在k8s容器中pod)上报偶发报连接超时,调用91次失败10次左右

org.apache.http.conn.ConnectTimeoutException: Connect to ***.com:443 [***.com/1.0.0.1] failed: connect timed out
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect

2、在阿里容器pod中访问埋点域名,偶发连接时间长,连接超时现象。十次有一次超时

测试方式 telnet ***.com 443

3、使用阿里云、腾讯云服务器(服务器有公网ip),访问正常

测试方式 telnet ***.com 443

4、为容器pod的宿主机增加eip(公网ip)后,访问正常

测试方式 telnet ***.com 443

网络路径:容器pod==》NAT网关==》外网埋点域名==》NLB==》ng集群

当前排查结论:容器pod需要经过公司NAT网关才能连接外网,使用带公网ip的云服务器都访问正常,怀疑是容器到网关有问题。

5、

 

 

 

 

参考文章:

1、https://blog.csdn.net/whatday/article/details/113427085

2、https://www.jianshu.com/p/4ffff35ef335

 

posted @ 2024-06-27 11:31  黑水滴  阅读(124)  评论(0编辑  收藏  举报