Haproxy 性能优化

List itemTCP计数器ListenOverflows大量增加查看方法cat /proc/net/netstat | awk ‘/TcpExt/ { print $21,$22 }’原因系统调用listen函数(int listen(int sockfd, int backlog);)的队列长度由min(backlog ,内核参数 net.core.somaxconn ) 决定...
摘要由CSDN通过智能技术生成
  1. List item

TCP计数器ListenOverflows大量增加

查看方法

cat /proc/net/netstat | awk ‘/TcpExt/ { print $21,$22 }’
原因

系统调用listen函数(int listen(int sockfd, int backlog);)的队列长度由min(backlog ,内核参数 net.core.somaxconn ) 决定,对应socket的listen 队列已满的情况下,在新增一个连接时的情况,ListenOverflows计数器加 1 。

解决方案

调整系统参数 net.core.somaxconn = 65535 #默认为128

cat 65535 > /proc/sys/net/core/somaxconn

HAProxy 耗尽cpu问题

现象

HAProxy绑定4核cpu、8核cpu、16核cpu,压测的时候,都会出现CPU 100%被使用的情况。

追查过程

  1. 通过 mpstat -P ALL 1 命令查看cpu 都用在哪里,可以看到cpu都绝大部分用在 sys态上。

  2. 通过 strace -p pid -c 查看HAProxy 进程那个系统调用占用cpu 最多,看到cpu 都用在了 connect系统调用上。

  3. HAProxy连接后端会使用connect系统调用,查看HAProxy配置,发现HAProxy连接后端就只有两个后端,即这种情况: vegeta(40台压测机器)-》HAProxy-》httptest(2台HAProxy后端),其中 HAProxy连接后端最多只能有63000个端口左右,大量的连接积压在HAProxy机器上,导致cpu被耗尽了。

解决方案

大量增加HAProxy的后端,解决HAProxy后端过少的瓶颈。

网卡 drop 数据包

现象

压测的时候,ifconfig发现网卡eth0 RX 出现 droppped。

解决方案

  1. 调大网卡Ring buffer

查看:ethtool -g eth0

设置Ring buffer到上限:ethtool -G eth0 rx 4096;ethtool -G eth0 tx 4096

  1. 调网卡队缓存队列

net.core.netdev_max_backlog = 2000000 #默认为1000,内核参数配置时,有具体的解释

最新稳定版HAProxy性能

系统自带版本 1.5.18

编译HAProxy 最新稳定版本(1.7.5 )

wget http://www.haproxy.org/down

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值