Linux性能异常经典案例分析之包量吞吐
一、网卡包量介绍
聊到网卡,我们通常第一个想到的就是带宽处理能力,像千兆、万兆、全双工等等指标更多展示的就是带宽有多大,但很少有人关心网卡的包处理能力上限在哪儿,到底是每秒1万、10万还是100万。为什么呢?因为极少有人会遇到包数转发处理能力的瓶颈,这种情况只出现在业务压力非常大、平均网络包size非常小的业务场景上,否则通常包数还没达到瓶颈,带宽就已经满了。
二、案例分享
2.1 业务场景说明
客户是加速类业务,即云主机负责流量、数据包的转发,云主机并不会去处理转发的数据报文。类似国内的很多游戏加速器服务~
2.2 故障分析
故障现象回顾:客户通过监控发现,云主机的CPU使用率很高,但是TOP实时无法采样到消耗CPU较高的进程。同时,TOP采样显示云主机CPU si指标较高,即服务器CPU软中断消耗了大量CPU性能。如下图:
推荐文章:Linux性能异常经典案例分析之D进程 可参考伏笔篇了解TOP参数输出信息含义!
软中断知识补充说明:对同一个 CPU 来说,中断处理比进程拥有更高的优先级,所以中断上下文切换并不会与进程上下文切换同时发生。同样道理,由于中断会打断正常进程的调度和执行,所以大部分中断处理程序都短小精悍,以便尽可能快的执行结束。另外,跟进程上下文切换一样,中断上下文切换也需要消耗 CPU,切换次数过多也会耗费大量的 CPU,甚至严重降低系统的整体性能。所以,当你发现中断次数过多时,就需要注意去排查它是否会给你的系统带来严重的性能问题。(来源极客时间“Linux性能优化实战”篇)
恶补完软中断的知识,让我们回到客户问题的分析上:经过一系列的排查与分析,可以排除宿主异常影响虚机的场景,与此同时也无法找到异常的软件进程……此处省略200字
当排查到云主机网卡时,发现主机的网卡包量非常高,与此同时通过观察发现,软中断si值与网卡包量呈现正相关趋势,网卡包量下降时,软中断si值也在下降,如下图:
sar -n DEV 1 #通过sar命令1s输出一次网卡包量吞吐情况
文章推荐:Linux服务器性能分析命令sar详解
通过以上截图不难发现,云主机的包量吞吐峰值已经达到了10w+pps,通过sar分析的时候,包量已经降到了3W+pps,此时主机的软中断si值也下降到了20左右。所以可以确定虚机的峰值包量吞吐已经接近虚机网卡的瓶颈,云主机需要消耗更多的CPU去处理网卡数据包的转发。那么如何解决主机包量吞吐触及瓶颈的问题呢?让我们一起看看以下三个解决方案
三、常规解决方案
3.1 方案一:传统IDC物理服务器多张网卡做Bond负载均衡
多网卡绑定一方面能够提高网络吞吐量,另一方面也可以增强网络高可用。从软件的角度来看,多网卡绑定实际上只需要提供一个额外的bond区动程序即可,通过该虚拟网卡驱动程序可以将实际多块网卡屏蔽,对TCP/IP协议层而言只存在一个Bond网卡。
-mode=0 round-robin轮询策略(Round-robin policy) -mode=1 active-backup主备策略(Active-backup policy) -mode=2 load balancing(xor)异或策略(XOR policy) -mode=3 fault-tolerance(broadcast)广播策略(Broadcast policy) -mode=4 lacp IEEE 802.3ad 动态链路聚合IEEE 802.3ad Dynamic link aggregation) -mode=5 transmit load balancing适配器传输负载均衡(Adaptive transmit load balancing) -mode=6 adaptive load balancing适配器负载均衡(Adaptive load balancing)
3.2 方案二:云服务器横向扩展,增加节点数量
当单台UHost云主机网卡性能包量转发达到瓶颈时,可以通过ULB负载均衡横向扩展主机节点,将业务流量打散到多台UHost云主机上,即间接扩展了网卡所能承载的最大包量。
3.3 方案三:开启UCloud云主机网络增强功能
RSS(Receive-Side Scaling, also known as multi-queue receive),是网卡的硬件特性,实现多队列,将不同的流分发到不同的CPU上,同一数据流始终在同一CPU上,避免TCP的顺序性和CPU的并行性发生冲突。
(1)UCloud云主机的网络增强1.0特性,优化的就是网络数据包并行收发的能力,打开网络增强1.0配置,创建的新主机可以拥有网络高包量多队列并发特性,使带宽能力大幅提升,能并行处理和接受批量连接的报文,极大提升了虚拟机的包处理能力。原理如下图:
(2)UCloud网络增强2.0特性是基于新一代智能网卡进行网络包转发的优化方案,原理如下图:
注:快杰云主机使用的高性能智能网卡,主机内部可以看到三块网卡。对于业务侧来说,只需要关注eth0即可。快杰主机中出现的另外两块网卡的主要作用是,一块用于高性能网卡流量转发,另外一块是应对在迁移场景下的网络不中断。
网络增强性能数据参考UCloud官网。
作者:UStarGao
链接:https://www.starcto.com/systemtool/165.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-09-14Docker部署RabbitMQ集群并实现Haproxy代理
- 2021-02-21Docker创建与查看容器常用参数解读
- 2021-04-10CentOS7部署开源网络流量回溯分析系统Moloch
- 2021-07-03MySQL安全插件-密码复杂度+密码过期策略+登录失败处理
- 2021-09-13黑科技优质网站