端口被短连接耗尽了怎么办

背景

最近发现业务POD使用短连接过程中,端口被耗尽,一系列操作。

方案

  1. 扩大端口数量
  2. 降低单pod配置,横向扩容pod个数
  3. 改成长链接
  4. 调整内核参数

扩大端口数量

pod新增内核参数

net.ipv4.ip_local_port_range = 1024 65535

横向扩容

如果上述修改端口限制无法解决你的问题,那么能快速解决问题的方法就是降低你单pod规格,使得pod个数增加,分担端口压力。

修改成长链接

改这个,也需要你业务支持,编程语言有比较好的支持。

调整内核参数

这两个参数配合使用,reuse能复用time_wait端口

net.ipv4.tcp_timestamps=1 # 与tw_reuse一起用
net.ipv4.tcp_tw_reuse=1

这个参数没必要开tcp_rw_recycle

额外说一句

有同学说修改这个参数tcp_fin_timeout,字面意思是缩短time_wait的时间,加速端口回收,其实没啥*用,看看内核源码,就知道默认60s,除非修改内核代码,重新编译内核。

来一个生产环境机器的内核参数列表

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.ip_local_reserved_ports=30000-32767
net.ipv4.tcp_max_syn_backlog = 819200
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.core.wmem_max = 16777216
net.core.wmem_default = 8388608
net.core.somaxconn = 32768
net.core.rmem_max = 16777216
net.core.rmem_default = 8388608
net.core.netdev_max_backlog = 32768
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_max_tw_buckets = 30000000
vm.swappiness=0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值