简介
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]# lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 1 Core(s) per cluster: 8 Socket(s): 1 Cluster(s): 1 NUMA node(s): 1 Vendor ID: ARM BIOS Vendor ID: Alibaba Cloud Model: 0 BIOS Model name: virt-rhel7.6.0 Stepping: r0p0 BogoMIPS: 100.00 NUMA node0 CPU(s): 0-7 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm ssbs sb dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh [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 修改
user nginx; worker_processes 8; worker_cpu_affinity auto; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.include /usr/share/nginx/modules/*.conf; events { use epoll; accept_mutex off; worker_connections 102400; } http { access_log off; sendfile on; sendfile_max_chunk 512k; tcp_nopush on; keepalive_timeout 60; keepalive_requests 100000000000; open_file_cache max=10240000inactive=60s; open_file_cache_valid 80s; open_file_cache_min_uses 1; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information. include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500502503504 /50x.html; location = /50x.html { } } }
测试文件
设置测试文件 touch /usr/share/nginx/html/0kb.bin 然后在client端执行测试(将{server_ip}改为内网地址 wrk -t32-c1000-d20--latency http://{server_ip}/0kb.bin
性能优化
网络优化
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网关客户降本增效的最佳选择。