美文网首页
HAProxy端口资源耗尽的解决办法

HAProxy端口资源耗尽的解决办法

作者: 咦咦咦萨 | 来源:发表于2019-01-18 16:52 被阅读0次

项目背景

系统使用HAProxy为mq和部分应用的负载均衡服务。近期,瞬时流量过大,导致出现连锁反应,HA开始波动。

HAProxy版本:1.6.3

问题分析

image.png

心跳检测大量失败,项目状态极不稳定。观察日志发现如下警告:

FD limit (65535) too low for maxconn=204800/maxsock=410295. Please raise 'ulimit-n' to 410295 or more to avoid any trouble.

初步确定是因为机器的端口资源耗尽,导致项目通信异常,而异常的出现,将流量又进行了放大,导致资源更加紧张,形成恶性循环。

解决办法

通过查阅资料,发现两种解决办法:

  1. 升级HAProxy版本到1.7,利用linux内核的IP_BIND_ADDRESS_NO_PORT特性,变相提升连接数能力。但是需要升级内核到4.2。(需要停机维护)


    685908E4C09A2DADBBC277D136242FCF.jpg
  2. 参考https://blog.csdn.net/libaineu2004/article/details/79147778,暂时增加源端口数量并重用等待端口。

最终采取第二种办法解决问题:

解决方案
1.增加本地端口范围
对于单一的dstIP:port,可用的源端口默认是28K左右,可以用如下命令查看当前值:
[haproxy ~]# sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768 61000

增加到64K个源端口
[haproxy ~]# vi /etc/sysctl.conf
net.ipv4.ip_local_port_range = 1025 65000

2.允许处于TIME_WAIT状态的源端口重用
[haproxy ~]# vi /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

总结

  1. 系统基础架构要保持升级,特别是重要的可能成为瓶颈的服务;
  2. 负载方式多样化,利用好备用方案;
  3. 完善服务降级方案。

相关文章

网友评论

      本文标题:HAProxy端口资源耗尽的解决办法

      本文链接:https://www.haomeiwen.com/subject/xgwndqtx.html