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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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
相关文章
|
30天前
|
网络协议 Ubuntu Linux
gpg从公钥服务器接收失败(gpg: keyserver receive failed: Server indicated a failure)
通过上述步骤,大多数情况下应该能够解决GPG从公钥服务器接收失败的问题。如果问题依旧存在,可能需要进一步调查与公钥服务器相关的更深层次的技术问题,或者考虑在相关社区论坛寻求帮助。
170 1
|
1月前
|
网络协议 Windows
Windows Server 2019 DHCP服务器搭建
Windows Server 2019 DHCP服务器搭建
|
1月前
|
网络协议 定位技术 Windows
Windows Server 2019 DNS服务器搭建
Windows Server 2019 DNS服务器搭建
|
1月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
43 3
|
2月前
|
缓存 Kubernetes Java
阿里云 SAE Web:百毫秒高弹性的实时事件中心的架构和挑战
SAE 事件中心通过智能诊断显示通知与用户连接起来,SAE WEB 百毫秒弹性实例给事件中心带来了新的实时性、海量数据和高吞吐的挑战,本篇将带您了解 SAE 整体事件中心的架构和挑战。
144 10
|
1月前
|
网络协议 文件存储 Windows
Windows Server 2019 FTP服务器搭建
Windows Server 2019 FTP服务器搭建
|
1月前
|
网络协议 Windows
Windows Server 2019 Web服务器搭建
Windows Server 2019 Web服务器搭建
|
2月前
|
负载均衡 网络协议 应用服务中间件
web群集--rocky9.2源码部署nginx1.24的详细过程
Nginx 是一款由 Igor Sysoev 开发的开源高性能 HTTP 服务器和反向代理服务器,自 2004 年发布以来,以其高效、稳定和灵活的特点迅速成为许多网站和应用的首选。本文详细介绍了 Nginx 的核心概念、工作原理及常见使用场景,涵盖高并发处理、反向代理、负载均衡、低内存占用等特点,并提供了安装配置教程,适合开发者参考学习。
|
3月前
|
JavaScript 搜索推荐 前端开发
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
76 1
|
3月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
157 0

热门文章

最新文章

相关产品

  • 云服务器 ECS