Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。

简介

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。

image.png

图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物理多核的能力,进而提高网络性能。

image.png

图2. RPS原理示意图


压缩优化

Nginx支持brotli和gzip的压缩算法,在倚天ECS上我们针对gzip做了深度定制优化,以提高gzip算法性能。通过利用倚天710 CPU支持SVE和SVE2 SIMD扩展指令,结合其他优化方案,使得gzip在压缩/解压缩上的显著性能提升。优化后的gzip版本单核下性能相比x86性能1.6倍,多核场景下2.3倍。

image.pngimage.png

  图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加速”即可,如下图所示。

image.png

图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网关客户降本增效的最佳选择。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
|
6天前
|
SQL 弹性计算 安全
阿里云上云优选与飞天加速计划活动区别及购买云服务器后续必做功课参考
对于很多用户来说,购买云服务器通常都是通过阿里云当下的各种活动来购买,这就有必要了解这些活动的区别,同时由于活动内的云服务器购买之后还需要单独购买并挂载数据盘,还需要设置远程密码以及安全组等操作之后才能正常使用云服务器。本文就为大家介绍一下目前比较热门的上云优选与飞天加速计划两个活动的区别,以及通过活动来购买云服务器之后的一些必做功课,确保云服务器可以正常使用,以供参考。
|
7天前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
43 9
|
8天前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
20天前
|
存储 编解码 应用服务中间件
使用Nginx搭建流媒体服务器
本文介绍了流媒体服务器的特性及各种流媒体传输协议的适用场景,并详细阐述了使用 nginx-http-flv-module 扩展Nginx作为流媒体服务器的详细步骤,并提供了在VLC,flv.js,hls.js下的流媒体拉流播放示例。
92 1
|
26天前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
45 6
|
2天前
|
机器学习/深度学习 人工智能 编解码
阿里云GPU云服务器优惠收费标准,GPU服务器优缺点与适用场景详解
随着人工智能、大数据分析和高性能计算的发展,对计算资源的需求不断增加。GPU凭借强大的并行计算能力和高效的浮点运算性能,逐渐成为处理复杂计算任务的首选工具。阿里云提供了从入门级到旗舰级的多种GPU服务器,涵盖GN5、GN6、GN7、GN8和GN9系列,分别适用于图形渲染、视频编码、深度学习推理、训练和高性能计算等场景。本文详细介绍各系列的规格、价格和适用场景,帮助用户根据实际需求选择最合适的GPU实例。
|
4天前
|
弹性计算 Linux 数据安全/隐私保护
阿里云上快速搭建幻兽帕鲁游戏联机服务器指南
对于热爱幻兽帕鲁游戏的玩家来说,搭建一台专属的联机服务器无疑能够大大提升游戏体验。阿里云作为领先的云计算服务商,为玩家提供了便捷、高效的服务器搭建方案。本文将为您详细介绍如何在阿里云上快速搭建幻兽帕鲁游戏联机服务器,让您轻松享受多人游戏的乐趣。
|
28天前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
49 4
|
29天前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。

热门文章

最新文章

相关产品

  • 云服务器 ECS
  • 下一篇
    DataWorks