谷歌云上的 NGINX 工作负载简介
基于 Ampere Altra 处理器的TAU T2A 虚拟机
Ampere® Altra®处理器从设计伊始就旨在为云原生应用程序(如NGINX)提供卓越的性能。以其创新架构,提供高性能、线性可扩展性和惊人的能源效率,Ampere Altra允许工作负载在不断增加的负载下,性能变化很小,以可预测的方式运行。在NGINX实际工作负载中提供行业领先的性能/瓦特能力和更低的碳足迹。
谷歌云基于Ampere Altra处理器的Tau T2A虚拟机针对向外扩展的云原生工作负载进行了成本优化,提供以多种预定的虚拟机形态-每个虚拟机最多48个vCPU,每个vCPU 4 GB内存,最高32 Gbps网络带宽,以及广泛的网络连接存储选项。这些虚拟机适用于诸多向外扩展的工作负载,如web服务器、容器化微服务、数据日志处理、媒体转码和Java应用程序。
NGINX是一个开源、高性能的HTTP服务器,也可以用作反向代理、负载均衡器、邮件代理和HTTP缓存。它使用复杂的事件驱动架构,允许在现代硬件上扩展到数十万个并发连接。根据w3technologies的数据,截至2021年,NGINX是高流量网站中最受欢迎的web服务器,市场份额为33.8%。
由Ampere Altra 处理器驱动的谷歌 T2A 虚拟机在各种NGINX web服务器配置中提供了极具竞争力的性能,包括在我们的测试中使用的启用tls的服务器配置。web服务器通过HTTPS为来自负载生成器的每个请求发送一个静态文件。我们的性能指标采用的是p.99延迟低于5毫秒的吞吐量(请求/秒)。
基于Ampere Altra 的谷歌Cloud T2A虚拟机性能优于传统的x86虚拟机。图1所示的性能结果显示,T2A虚拟机的性能比N2虚拟机高出15%,与N2d虚拟机大致相当。
对于云开发人员来说,性价比占总拥有成本(TCO)的很大一部分,并且是在云中进行大规模部署的重要考虑因素。T2A虚拟机的性价比比N2虚拟机高45%,比N2D虚拟机高11%。
Figure 3
在我们的测试中,NGINX托管在32个vCPU的虚拟机上。我们将基于Ampere Altra的GCP T2A虚拟机与基于Intel® Xeon® Ice lake的N2和基于AMD EPYC™ Milan的N2D虚拟机进行了比较。像大多数开源软件一样,NGINX在AArch64上是原生支持的,我们使用操作系统提供的相应包管理器在所有服务器vm上安装它。对于客户端请求,NGINX服务器通过HTTPS提供一个gzip压缩的静态文件。WRK作为负载生成器运行在单独的32 vCPU虚拟机上。性能以服务水平协议(SLA)下的每秒请求数来衡量。我们使用不超过5毫秒的第99%延迟(p.99)作为SLA。我们配置了合适的线程数和并发级别,以实现最大吞吐量,同时将p.99延迟保持在5毫秒以下。客户端和服务器虚拟机被配置为同一子网的一部分,这样可以实现最佳的网络吞吐量。
T2A Standard 8 | N2 Standard 8 | N2D Standard 8 | |
---|---|---|---|
Number of vCPUs | 32 | 32 | 32 |
Hourly cost | $1.232 | $1.553888 | $1.351872 |
Operating System | Debian 11 | Debian 11 | Debian 11 |
Kernel | 5.15.0-0.bpo.3-cloud-arm64 | 5.10.0-14-cloud-amd64 | 5.10.0-14-cloud-amd64 |
Memory | 64GB | 64GB | 64GB |
Disk | 300GB | 300GB | 300GB |
NGINX version | 1.18.0 | 1.18.0 | 1.18.0 |
WRK Version | 4.2.0 | 4.2.0 | 4.2.0 |
Static File Size | 53KB | 53KB | 53KB |
用于测试的NGINX配置:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
worker_rlimit_nofile 104857600;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
use epoll;
accept_mutex off;
worker_connections 10240;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log /var/log/nginx/access.log main;
access_log off;
open_file_cache max=10240000 inactive=60s;
open_file_cache_valid 80s;
open_file_cache_min_uses 1;
keepalive_requests 100000000000;
keepalive_timeout 300s;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 4096;
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 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
root /usr/share/nginx/html;
ssl_certificate "/etc/pki/tls/certs/NGINX_TEST_SSL.crt";
ssl_certificate_key "/etc/pki/tls/private/NGINX_TEST_SSL.key";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers "AES128+SHA256 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !MEDIUM !RC4";
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
下面的配置文件是我们在NGINX中使用的gzip压缩设置。
gzip on;
gzip_min_length 100;
gzip_buffers 8 32k;
gzip_types text/plain text/css application/x-javascript text/xml application/xml text/javascript;
gzip_vary on;
在客户端,使用的wrk命令行如下所示。我们调整 $thread和$connection来达到5 ms p.99延迟SLA下的最佳吞吐量。
./wrk-4.2.0/wrk -t$thread -c$connection -H 'Accept-Encoding: gzip' -d10s https://${NGINX_HOST}:443/${filename} --latency
谷歌Cloud Tau T2A 虚拟机由Ampere Altra处理器提供算力支持,由于其创新的云原生设计和出色的性价比,是NGINX等云原生工作负载的绝佳选择。对于云应用程序开发人员来说,由于AArch64软件生态系统的成熟,可以无缝地将NGINX应用程序从传统的x86 虚拟机过渡到Ampere Altra 虚拟机。总的来说,出色的性能和令人信服的性价比之外,同时减少您的碳足迹。有关使用Ampere Altra处理器的谷歌Tau T2D虚拟机的更多信息,请访问谷歌云博客。
此处包含的所有数据和信息仅供参考,Ampere 保留更改它的权利,恕不另行通知。本文档可能包含技术错误、遗漏和印刷错误,Ampere 没有义务更新或更正此信息。 Ampere 不作任何形式的陈述或保证,包括但不限于对不侵权、适销性或适用于特定目的的明示或暗示保证,并且不承担任何形式的责任。所有信息均“按原样”提供。本文件不是 Ampere 的要约或具有约束力的承诺。使用此处设想的产品需要随后的谈判和最终协议的执行,或者受 Ampere 的商品销售条款和条件的约束。
与 Ampere 测试中使用的不同的系统配置、组件、软件版本和测试环境可能会导致与 Ampere 获得的测量结果不同。
©2022 Ampere Computing 版权所有。Ampere、Ampere Computing、Altra和“A”标志均为Ampere Computing的注册商标或商标。Arm是Arm有限公司(或其子公司)的注册商标。本出版物中使用的所有其他产品名称仅用于识别目的,可能是其各自公司的商标。
Ampere Computing®/ 4655 Great America Parkway, Suite 601 / Santa Clara, CA 95054 / amperecomputing.com