裸机和K8S容器云环境下NGINX性能基准测试

目前基于虚拟技术的流行,越来越多的企业基于容器云技术来部署工作负载。而作为边缘节点最重要的一个服务可能会基于Nginx作为业务流量的入口。这样就面临一个选择对于入口的Nginx服务器是采用实体机呢?还是采用容器呢?

针对这个问题Nginx官方对两种情况下性能表现做了基准测试,请跟虫虫一起学习一下测试的结果。

裸机和K8S容器云环境下NGINX性能基准测试

测试方法

使用两种架构来衡量和比较Nginx在不同环境下的性能。对于每个架构,运行单独的测试集来衡量两个关键指标:每秒请求数 (RPS) 和每秒SSL/TLS事务数 (TPS)。

传统架构

Nginx在两种条件下进行测试,其被测系统(SUT)为:在裸机和管理程序环境中运行。在这两种情况下,四个Ixia客户端生成请求,NGINX 负载均衡到四个Ixia Web服务器。Web服务器返回一个128字节的文件响应每个请求。

裸机和K8S容器云环境下NGINX性能基准测试

基准测试中使用的软硬件如下:

Ixia客户端和Web服务器使用IxLoad进行测试,硬件环境为Axia Xcellon-Ultra™ XT80v2 应用刀片机。

两种情况下的SUT,CentOS 7 配备英特尔PowerEdge服务器上的操作系统。

管理程序是 VMWare ESXi 7.0.0 版。

Kubernetes 架构

SUT是运行在Rancher Kubernetes Engine (RKE)裸机平台上的NGINX Ingress Controller(基于 NGINX Open Source)。四个Ixia客户端生成请求,Nginx入口控制器将这些请求定向到后端Kubernetes部署,这是一个Web服务器,返回一个1KB的文件响应每个请求。

裸机和K8S容器云环境下NGINX性能基准测试

测试中使用的软硬件如下:

Ixia客户端使用IxLoad进行测试,硬件环境为Axia Xcellon-Ultra™ XT80v2 应用刀片机。节点上不需Ixia Web服务器。

SUT 和托管后端应用程序的节点的操作系统都是CentOS 7。SUT和后端应用程序运行在两个带有Intel的独立PowerEdg服务器节点上。

Nginx Ingress Controller版本是1.11.0。

测试指标

基准测试中共收集两个性能指标:

每秒请求数 (RPS) — Nginx每秒可以处理的请求数,在固定时间段内平均。来自Ixia客户端的请求使用http方案。

SSL/TLS 每秒事务数 (TPS) —Nginx每秒可以建立和服务的新HTTPS连接数。 在这种情况下,来自Ixia客户端的请求使用了https方案:RSA 2048 位密钥大小和完美前向保密的。

Ixia 客户端发送了一系列HTTPS请求,每个请求都在一个新连接上。Ixia客户端和Nginx执行TLS握手以建立安全连接,然后Nginx将请求代理到后端。请求满足后连接关闭。

性能分析

下一节中的表格报告了在传统和Kubernetes架构中Nginx可用不同数量的CPU实现的RPS和SSL TPS数量。

传统的本地架构

Nginx在裸机上的性能呈线性增长,直到可用CPU数量达到8个。由Ixia客户端限制无法测试更多的内核,当有8个或更多内核时,Ixia客户端无法生成足够的请求来使SUT饱和(达到100% CPU 利用率)。

与裸机相比,虚拟化使性能下降了很小但可以衡量的程度。管理程序中的CPU指令比裸机上的相同指令需要更多的时钟周期,这会导致额外的开销。

裸机和K8S容器云环境下NGINX性能基准测试

Kubernetes架构

当将内核数量扩展到8个时,Kubernetes中Nginx Ingress Controller性能会线性扩展。

与传统架构的结果进行比较,发现在Kubernetes中运行Nginx(Nginx Ingress Controller)会极大降低network‑bound操作(如服务请求的性能,以RPS衡量)。这是由于他要连接到其他服务的底层容器网络堆栈。

另一方面,传统环境和Kubernetes环境对于CPU密集型操作(如SSL/TLS握手(以TPS 衡量)之间没有性能差异——实际上,Kubernetes中的TPS稍好一些。

此外,当启用超线程 (HT) 时,看到TPS大约增加了10%。

裸机和K8S容器云环境下NGINX性能基准测试

结论

如果应用程序基础设施为network‑bound操作(在测试中以RPS衡量),那么传统裸机环境中运行Nginx是性能的最佳选择。由于环境中使用的底层容器网络堆栈,在Kubernetes中运行Nginx Ingress Controller 会导致network‑bound操作的性能成本最高。

虚拟机管理程序为网络和CPU密集型操作引入了少量但可衡量的性能成本(RPS 约为裸机价值的 80%)。

如果应用程序基础架构为CPU 密集型操作(测试中以TPS衡量),则NGINX在传统环境和 Kubernetes 环境中几乎没有性能差异。

在测试中,超线程将可并行化CPU密集型操作(如加密)的性能提高了大约10%。

展开阅读全文

页面更新:2024-04-14

标签:裸机   基准   容器   性能   环境   测试   节点   应用程序   架构   管理程序   客户端   数量   传统   操作   服务器   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top