简介
Nginx是一款高性能的开源Web服务器和反向代理服务器,它可以处理大量的并发连接,同时还支持负载均衡、动态HTTP内容缓存和压缩,以及支持SSL和TLS加密。NGINX可以提供非常高的性能和可靠性,是世界上领先的Web服务器,超过35%的活跃网站是基于NGINX的。对比Apache Httpd、NodeJS、PHP、Tomcat等Web 服务方案,NGINX具有更高并发能力、性能和可靠性。
以下我们在阿里云 ECS基于 G8y 实例(基于 Armv9 的倚天 710 处理器)和 G7 实例(基于最新一代x86处理器)对NGINX的吞吐量做了测试对比,评估了倚天ECS性能优势。
基础环境
我们使用开源的wrk作为负载生成器和性能基准测试工具,wrk部署在单独的G8y.8xlarge ECS实例上;
服务端使用两种类型阿里云ECS 2xlarge实例,部署了NGINX,并配置8个worker。
图1. NGINX 测试模型
两种被测ECS实例类型配置如下:
Processor |
ECS type |
CPU |
Memory |
Disk |
倚天710 |
G8y.2xlarge |
8vcpu |
32GB |
ESSD PL2 500G |
x86处理器 |
G7.2xlarge |
8vcpu |
32GB |
ESSD PL2 500G |
表1. 测试实例配置
ECS硬件信息,通过lscpu查看
[root@Yitian]#
基准测试使用以下软件版本和测试参数。
Component name |
Version |
NGINX |
1.20.1 |
GCC version |
10.2.1 20200825 (Alibaba 10.2.1-3 2.32) |
Wrk |
4.0.2 |
Operating System |
Alibaba Cloud Linux 3.2104 LTS |
Test config parameter |
Value |
Number of threads |
32 |
Number of connections |
1000 |
表2. 软件版本和测试参数
测试方案
配置 /etc/nginx/nginx.conf 修改
}
测试文件
--latency
性能优化
网络优化
- RPS
RPS(Receive Packet Steering)收包中断亲和性,在内核态中通过软件方式把softIRQ的均衡到各个CPU。未配置RPS时,单个网卡接收IRQ和softIRQ是在同一个CPU上,通过设置RPS,网卡驱动通过四元组生成一个hash,然后根据hash将softirq分配到对应的CPU上进行处理,从而充分发挥倚天710物理多核的能力,进而提高网络性能。
图2. RPS原理示意图
压缩优化
Nginx支持brotli和gzip的压缩算法,在倚天ECS上我们针对gzip做了深度定制优化,以提高gzip算法性能。通过利用倚天710 CPU支持SVE和SVE2 SIMD扩展指令,结合其他优化方案,使得gzip在压缩/解压缩上的显著性能提升。优化后的gzip版本单核下性能相比x86性能1.6倍,多核场景下2.3倍。
图4. gzip 优化前后性能对比
实测性能
通过上述优化,我们在倚天ECS实例与同规格的x86 ECS 实例进行对比,未开压缩场景NGINX吞吐量性能优势高达 32% ,开启压缩场景下,倚天性能优势达74%。下表中显示的结果是 10次连续测试运行的汇总结果。
NGINX 在 G8y 和 G7 实例上的性能数据。
Test Type |
G7.2x (Requests/sec) |
G8y.2x (Requests/sec) |
Performance benifit gain (%) |
HTTP persistent connection |
937k |
1187k |
27% |
HTTPS persistent connection |
623k |
820k |
32% |
表3. (G8y vs. G7) NGINX吞吐量性能数据
开启gzip压缩,测试数据大小9K。
Test Type |
G7.2x (Requests/sec) |
G8y.2x (Requests/sec) |
Performance benifit gain (%) |
HTTP persistent connection with gzip |
45.8K |
80K |
74% |
表4. (G8y vs. G7) NGINX开启gzip吞吐量性能数据
Booster
ECS Booster是阿里云针对倚天ECS性能优化研发推出的一键式优化服务产品,针对不同都业务场景通过勾选相应优化配置可以一键开启ECS性能加速功能。NGINX场景下,我们只需在实例创建阶段,选择倚天实例G8y,选择Alinux操作系统,勾选加速选项“nginx加速”即可,如下图所示。
图5. ECS Booster一键加速功能开启
总结
对比x86 ECS,基于倚天710 CPU的G8y ECS示例,具有真正的物理多核,CPU核数和性能增长具有更好的线性度关系,同时倚天ECS 实例具备更好的CPU安全水位,更低的功耗。
在NGINX应用场景下,与同规格的x86 的 ECS 实例相比,倚天ECS 实例表现出了更高的吞吐量性能优势,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 此外,基于倚天710的G8y实例售价比G7实例低23%,更好的性能更低价格,综合性价比超过1.5倍,是Web网关客户降本增效的最佳选择。
好啦!小弹的分享到此为止。我们更欢迎您分享您对阿里云产品的设想、对功能的建议或者各种吐槽,请扫描提交问卷并获得社区积分或精美礼品一份。https://survey.aliyun.com/apps/zhiliao/P4y44bm_8
【扫码填写上方调研问卷】
欢迎每位来到弹性计算的开发者们来反馈问题哦~