五百万会话级LVS调优实践

某生产系统LVS软负载均衡在处理500万级会话时遇到卡顿,表现为CPU满载、Ping丢包。经过分析,发现是业务从长连接改为短连接导致每秒连接量激增,网卡中断处理不及时。解决方案包括:增加CPU核数、调整网卡类型和队列数、优化irqbalance配置,最终在物理机上实现CPU负荷均衡,业务恢复正常。
摘要由CSDN通过智能技术生成

某生产系统前端LVS软负载均衡业务会话量达5百万级,某日出现业务卡顿,LVS服务器Ping响应丢包和时延较大,本文记录了调优过程。

一、问题现象:

某生产系统前端LVS软负载均衡业务会话量达5百万级,服务器为8核16G的虚拟机,某日出现业务卡顿,LVS服务器Ping响应丢包和时延较大。top查看CPU负荷如下图:

可以看到CPU已完全跑满,业务当然要受影响了。

二、原因分析

1、经与业务侧沟通,业务侧进行了策略调整,将原长连接调整为短连接了,业务终端并没有增加,但每秒连接量有大幅增加。

2、检查业务情况,高CPU占用的进程均为ksoftirqd进程,显示为网卡软中断切换占据了全部CPU时间,导致系统卡顿,响应出现问题。

三、问题处理

1、首先尝试对虚拟服务器进行CPU扩容,从8核16G调整为16核16G,增加了8个CPU核,重启后检查服务器负荷如下:

2、此时服务器不再卡顿、Ping也恢复正常。分析可知,Cpu0目前负荷降下来了,服务器操作就不受影响了,但明显可以看到CPU 1、3、5、7、9、10、12、14核处于跑满的情况,对应占用CPU核的进程还是ksoftirqd,业务连接还是不畅。

3、检查irqbalance服务状态,可以看到irqbalance服务运行正常。

[root@lvs-10 ~]# systemctl status irqbalance
● irqbalance.service - irqbalance daemon
     Loaded: loaded (/usr/lib/systemd/system/irqbalance.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-03-20 22:11:44 CST; 10h ago
       Docs: man:irqbalance(1)
             https://github.com/Irqbalance/irqbalance
    Process: 1091 ExecStart=/usr/sbin/irq_balancer (code=exited, status=0/SUCCESS)
   Main PID: 1098 (irqbalance)
      Tasks: 2 (limit: 98893)
     Memory: 588.0K
     CGroup: /system.slice/irqbalance.service
             └─1098 /usr/sbin/irqbalance --pid=/var/run/irqbalance.pid

3月 20 22:11:44 lvs-10.227.49.244 systemd[1]: Starting irqbalance daemon...
3月 20 22:11:44 lvs-10.227.49.244 systemd[1]: Started irqbalance daemon.

4、检查网卡的中断占用情况

[root@lvs-10 ~]# cat /proc/interrupts |egrep "CPU|ens192"
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       CPU8       CPU9       CPU10      CPU11      CPU12      CPU13      CPU14      CPU15      
 57:          0          0          0          0          0          0          0          0          0          0    2327223      80554          0          0          0          0   PCI-MSI 5767168-edge      ens192-rxtx-0
 58:          0          0          0          0          0          0          0          0          0          0          0          0    2400361          0          0          0   PCI-MSI 5767169-edge      ens192-rxtx-1
 59:          0    2305749          0          0          0          0          0          0          0          0          0          0          0      80809          0          0   PCI-MSI 5767170-edge      ens192-rxtx-2
 60:          0          0          0          0          0          0          0          0          0          0          0          0          0          0    2507274          0   PCI-MSI 5767171-edge      ens192-rxtx-3
 61:          0          0          0    2355732          0          0          0          0          0          0          0          0          0          0          0      80091   PCI-MSI 5767172-edge      ens192-rxtx-4
 62:      81682          0          0          0          0    2370166          0          0          0          0          0          0          0          0          0          0   PCI-MSI 5767173-edge      ens192-rxtx-5
 63:          0      81439          0          0          0          0          0    2269751          0          0          0          0          0          0          0          0   PCI-MSI 5767174-edge      ens192-rxtx-6
 64:          0          0      81183          0          0          0          0          0          0    2328560          0          0          0          0          0          0   PCI-MSI 5767175-edge      ens192-rxtx-7
 65:          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0   PCI-MSI 5767176-edge      ens192-event-8

可以看到CPU 1、3、5、7、9、10、12、14核分别对应网卡队列关系如下:

 CPU10 <------->  ens192-rxtx-0
 CPU12 <------->  ens192-rxtx-1
 CPU1  <------->  ens192-rxtx-2
 CPU14 <------->  ens192-rxtx-3
 CPU3  <------->  ens192-rxtx-4
 CPU5  <------->  ens192-rxtx-5
 CPU7  <------->  ens192-rxtx-6
 CPU9  <------->  ens192-rxtx-7

 综上可见,服务器对应的网卡队列数为8,irqbalance服务也运行生效了,网卡中断分配到了8个CPU核上,但因为业务负荷大,8个CPU核无法完成相关数据的转发任务,导致相应CPU负荷打满。解决办法应该就是增加网卡的队列数。

5、检查虚拟服务器网卡

服务器为vmware虚拟机,网卡为VMXNET3型虚拟网卡:

该型网卡仅支持8队列,不能增加队列数,将虚拟网卡更换为E1000E,测试发现E1000E虚拟网卡也仅支持8队列,不能增加队列数。看来用vmware虚拟机无法解决,遂考虑切换到物理机平台。

6、切换业务到物理机平台(2路16核CPU,总计32物理核,支持超线程)

支持的线程数如下:

[root@localhost opt]# nproc
64

 7、查看物理机网卡情况

物理机网卡为2个万兆光口,配置为bond,网卡情况

# ip add |grep "state UP"
4: ens4f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
12: ens6f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
18: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 10

查看物理机网卡队列数 

[root@lvs-10 tmp]# ethtool -l ens4f0
Channel parameters for ens4f0:
Pre-set maximums:
RX:             n/a
TX:             n/a
Other:          1
Combined:       63
Current hardware settings:
RX:             n/a
TX:             n/a
Other:          1
Combined:       63
[root@lvs-10 tmp]# ethtool -l ens6f0            
Channel parameters for ens6f0:
Pre-set maximums:
RX:             n/a
TX:             n/a
Other:          1
Combined:       63
Current hardware settings:
RX:             n/a
TX:             n/a
Other:          1
Combined:       63

可以看到两张网卡的队列数均支持到63个且配置为63个队列。

8、启动LVS服务,观察CPU负荷:

可以看到CPU负荷不均衡,CPU0承担了较大负荷,继续观察,服务器卡顿及Ping丢包问题依然存在。

9、检查irqbalance服务运行情况,可以看到其在运行

[root@lvs-10 log]# systemctl status irqbalance
● irqbalance.service - irqbalance daemon
     Loaded: loaded (/usr/lib/systemd/system/irqbalance.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-03-22 14:51:20 CST; 14min ago
       Docs: man:irqbalance(1)
             https://github.com/Irqbalance/irqbalance
    Process: 1763 ExecStart=/usr/sbin/irq_balancer (code=exited, status=0/SUCCESS)
   Main PID: 1769 (irqbalance)
      Tasks: 2 (limit: 821304)
     Memory: 932.0K
     CGroup: /system.slice/irqbalance.service
             └─ 1769 /usr/sbin/irqbalance --pid=/var/run/irqbalance.pid

Mar 22 14:51:20 lvs-10.227.49.245 systemd[1]: Starting irqbalance daemon...
Mar 22 14:51:20 lvs-10.227.49.245 systemd[1]: Started irqbalance daemon.

10、查看网卡中断的CPU占用情况

[root@lvs-10 log]# cat /proc/interrupts |egrep "CPU|ens4f0"
            CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       CPU8       CPU9       CPU10      CPU11      CPU12      CPU13      CPU14      CPU15      CPU16      CPU17      CPU18      CPU19      CPU20      CPU21      CPU22      CPU23      CPU24      CPU25      CPU26      CPU27      CPU28      CPU29      CPU30      CPU31      CPU32      CPU33      CPU34      CPU35      CPU36      CPU37      CPU38      CPU39      CPU40      CPU41      CPU42      CPU43      CPU44      CPU45      CPU46      CPU47      CPU48      CPU49      CPU50      CPU51      CPU52      CPU53      CPU54      CPU55      CPU56      CPU57      CPU58      CPU59      CPU60      CPU61      CPU62      CPU63      
  90:        212         25          0          0          0         38         51    7855040          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0         46         94          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 1048576-edge      ens4f0-TxRx-0
  91:         76         23         37         32          0         83          0         74          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0    8017172          0         90          0         30          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 1048577-edge      ens4f0-TxRx-1
  92:          0          0         21    1567822          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0      52904          0        159          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 1048578-edge      ens4f0-TxRx-2
  93:          0    1846548          0         23          0         31          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0        132          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-PCI-MSI 1048579-edge      ens4f0-TxRx-3
  94:          0         42          0          0    2354851          0          0      53144          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0      
  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代先生.重庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值