性能测试环境与数据

本节将针对优化后的负载均衡器进行性能测试,并给出测试结果。

7.6.1 大并发测试环境

为了评估负载均衡器的性能,我们需要构建一套高并发测试环境。经过优化的负载均衡器可以达到数千万的PPS和数万兆的网络流量,而且为了模拟真实应用场景,测试数据包不能随意被构造,而是要来源于应用层服务。这对我们测试系统提出了苛刻要求,既要保证能测试到负载均衡器的性能极限,又要让测试客户端和后端服务器不能成为测试系统的性能瓶颈。为了满足真实应用场景的需求,可以使用高性能的HTTP Client/Server方案。由于单台HTTPClient/Server的性能一般远低于负载均衡器的转发性能,所以对HTTPClient/Server进行了优化并采用了集群化方案,于是有了如图7-10所示的分布式测试系统。

均衡器_均衡器下载_均衡器调节参数

图7-10 分布式测试系统

分布式测试系统主要由以下4部分构成。

● 负载均衡器(LB):被测对象是四/七层负载均衡器。在测试开始前,四/七层负载均衡器通过读取配置文件配置测试业务、重置性能统计数据;测试开始后接收客户端的请求,并按照配置文件指定的策略将接收到的测试流量转到后端HTTP服务器上,测试结束后将性能数据传递给测试控制器。

● 测试控制器(Test Controller):控制测试的启动、停止,收集测试数据,监控测试状态。测试控制器是用脚本编写的一套测试控制程序,它实现了分布式测试系统的集中控制。当开始测试时,只需要在测试控制器上执行开始测试的命令,测试控制器就会利用网络通信并发地通知各个HTTP客户端产生测试流量。测试结束时,测试控制器将收集汇总LB、HTTP客户端和HTTP服务器上的测试数据。在测试过程中,测试控制器会监控LB、HTTP客户端和HTTP服务器的负载状态,以确保测得的性能数据不受环境限制的影响。

● HTTP客户端集群(HTTP Client):HTTP客户端使用wrk产生测试流量。wrk的实现采用了多线程和事件驱动模型,能够在单台服务器上并发产生大量的HTTP请求。在使用时可以通过调整wrk维持的连接数量和使用的线程数量,调节输出负载的大小。也可以通过参数指定测试负载的输出时间。

● HTTP服务器集群(HTTP Server):HTTP服务器使用了F-Stack(见链接[32])Nginx提供的WebServer服务。F-Stack是基于DPDK KernelBypass的高性能的网络应用框架,移植了Freebsd的协议栈,支持Nginx、Redis等多种成熟的应用。我们使用F-Stack Nginx集群作为WebServer,以避免后端服务器成为整个分布式测试系统的瓶颈。

在万兆网络的测试环境下,我们使用了7台64核wrk客户端服务器和3台FStack Nginx服务器,服务器配置为2.2GHz 64核CPU和62GB内存。在测试时,HTTP客户端和服务器端都设置了CPU亲和性,保证每个CPU都能得到有效利用。wrk的CPU亲和性可以通过启动多个wrk进程然后使用tasklet配置,FStack Nginx的CPU亲和性通过F-Stack配置文件和Nginx配置文件配置。

7.6.2 四层负载均衡性能数据

四层负载均衡器的主要评价指标是包转发率和吞吐量。我们用HTTP短连接测试DPDK四层负载均衡器DPVS的性能,DPVS配置一个TCP FullNAT转发服务,3台F-Stack Nginx的响应配置为返回一个cached字符串“Hi,I am xxx.”,其中请求包长和响应包长平均约为90字节,根据线速的计算方法,包转发率的线速约为11.1Mpps。表7-2列出了Worker数量为1~6个时,DPDK四层负载均衡器的包转发率和吞吐量性能数据。

均衡器_均衡器下载_均衡器调节参数

表7-2 DPVS性能数据

包转发率和吞吐量数据都来源于DPVS的业务管理工具ipvsadm(ipvsadmln–stats–exact命令),获取1s内的平均值。可以看到,在万兆以太网环境下,DPVS有较好的多核扩展性能,且在Worker数量为5个时可以实现TCPFullNAT线速转发。

图7-11所示为LVS、Maglev、DPVS转发性能对比(见链接[33])。可以看出,DPVS转发性能略低于Maglev转发性能,但明显高于LVS转发性能。需要说明的是,图7-11中给出的是DPVS FullNAT转发性能数据,DR转发性能会进一步优于FullNAT转发性能,但由于测试环境的限制,未能测试到DR转发性能的极限。

均衡器下载_均衡器_均衡器调节参数

图7-11 LVS、Maglev、DPVS转发性能对比

图7-12所示为DPVS控制面和数据面的性能火焰图,其数据来源是DPVS性能测试过程中用Linux Perf(见链接[35])工具采集的30 s的cpu-cycle事件。

均衡器调节参数_均衡器_均衡器下载

图7-12 DPVS控制面和数据面的性能火焰图

通过图7-12可以看到,DPVS各个模块和函数的CPU占用时间为进一步性能优化提供了很好的思路和方向。

7.6.3 七层负载均衡性能数据

七层负载均衡器常见的形式是Nginx反向代理,通过Nginx upstream模块将请求转发到后端服务器上。为了对比七层负载均衡器的性能,我们测试了以下3种Nginx反向代理的性能。

● Nginx-1.10.3:Linux 3.10.0环境,Nginx Worker绑定CPU物理核,采用Epoll事件模型,并优化了相关内核参数(参考7.5.2节)。

● FastSocket:使用FastSocket内核环境,Nginx Worker绑定CPU物理核均衡器,采用Epool事件模型,并关闭了accpet mutex(参考7.5.3节)。

● F-Stack:采用DPDK PMD实现的Kernel Bypass方案,Nginx Worker与F-Stack lcore_mask对应。

测试并发流量为500倍的Nginx Worker数量,后端服务器是F-Stack Nginx服务器。图7-13所示为不同的Nginx反向代理在不同Worker数量下的QPS性能数据。

均衡器调节参数_均衡器_均衡器下载

图7-13 不同Nginx反向代理在不同Worker数量下的QPS性能数据

通过图7-13可以看到,FastSocket随着Nginx的Worker数量的增加,其性能明显优于普通的Linux Nginx;而F-Stack性能在仅有一个Worker时的QPS数据就是其他两种的数倍,而且随着Worker数量的增加,性能可以呈线性提升。

由此可见,F-Stack中Kernel Bypass方案的使用对性能的提升作用显著。

7.7 大容量网卡

随着用户、服务商对高带宽需求的不断增加创业项目,以及云服务数据中心的快速发展,以太网的传输速率从早前的1Gbit/s、10Gbit/s提升到25Gbit/s、40Gbit/s、100Gbit/s甚至更高。

如图7-14所示均衡器,高带宽以太网有两种技术升级路径:一种是目前采用较多的10Gbit/s-40Gbit/s-100Gbit/s升级路径;另一种是10Gbit/s-25Gbit/s-50Gbit/s-100Gbit/s升级路径。尽管目前40Gbit/s占据着以太网端口市场的主要份额,但它采用的是多通道技术,相比25Gbit/s的单通道,显然25Gbit/s能够为机架服务器的带宽连接提供更大的端口密度和更低的单位成本。所以从目前看来,25Gbit/s高速以太网更符合未来的发展趋势。

均衡器调节参数_均衡器下载_均衡器

图7-14 高速以太网升级路径

我们使用Mallenox 25Gbit/s网卡测试了DPVS的性能,如图7-15所示,在平均包长约为100字节的TCP小包的情况下,万兆网卡和25Gbit/s网卡的DPVS的帧转发率和吞吐量,其中横坐标是DPVS使用的Worker数量,纵坐标是DPVS的帧转发率和吞吐量。我们知道,10Gbit/s网络帧转发率理论极限为12.88Mpps(即64字节小包线速),使用25Gbit/s网卡,DPVS的帧转发率已经能突破万兆网卡的线速极限,同时对应的吞吐量也超过了万兆网卡10Gbit/s的速率。

从另一个角度来看,在DPVS Worker数量相同的情况下,25Gbit/s网卡的性能比万兆网卡有所提升。因此,对于大流量负载均衡服务来说,使用高速网卡也是提高单机性能的一种途径。

均衡器下载_均衡器_均衡器调节参数

图7-15 DPVS在10Gbit/s、25Gbit/s网卡上的性能比较

本文给大家讲解的内容是性能测试环境与数据

注册会员查看全部内容……

限时特惠本站每日持续更新海量各大内部创业教程,年会员只要98元,全站资源免费下载
点击查看详情
站长微信:9200327