通常衡量云服务器的网络性能时,会考虑分析Nginx服务的长连接每秒完成请求数以及短连接每秒完成请求数,本文介绍如何获得云服务器Nginx最佳性能的测试方案。
测试工具及版本
本文将在Server端部署Nginx服务,Client端部署Wrk压测工具。
- Nginx:高性能的HTTP和反向代理的轻量级Web服务器,本文以Nginx 1.18.0为例。
- Wrk:轻量级的HTTP基准测试工具,本文以wrk [epoll] Copyright (C) 2012 Will Glozer为例。
测试指标
Requests/sec:平均每秒完成的请求数,该值越大表示对应的Nginx性能表现更优。
测试环境
两台相同规格的ECS实例,分别作为服务端(Sever)和客户端(Client),具体配置如下表所示。
操作步骤
步骤一:Server端部署并启动Nginx服务
- 按Esc退出编辑模式,输入:wq并按Enter键,保存并退出文件。
- 执行如下命令创建运行文件nginx_run.sh。
步骤二:优化实例配置以获取最佳的Nginx性能(可选)
步骤三:Client端部署Wrk工具并创建测试脚本
- 按Esc退出编辑模式,输入:wq并按Enter键,保存并退出文件。
- 按Esc退出编辑模式,输入:wq并按Enter键,保存并退出文件。
步骤四:Client端执行脚本测试并获取结果
- 获取 Server端的私网IP地址,然后在Client端执行如下命令进行测试。
- bash wrk_run.sh <serverIP> <threadNums> <connNums>
- serverIP(必填):Sever端云服务器的私网IP地址,可在云服务器控制台实例列表页的“主IPv4地址”列查看。
- threadNums(选填):创建的线程数,默认128。
- connNums(选填):创建的连接数,默认1024。
- 测试结果如下,其中可重点关注Requests/sec项,表示平均每秒完成的请求数,该值越大代表对应的 Nginx 性能表现更优。
-
最佳配置
Nginx相关性能受到多方面因素影响,例如:Nginx服务配置参数、内核参数、网卡队列等,您可以参考下文优化云服务器配置以获得最佳的Nginx性能体验。
关闭napi_tx
关闭napi_tx后,可以减少网卡发包操作时的硬中断及软中断数量,提升Nginx性能。
该特性仅在 Linux内核版本 ≥ 5.3 时默认开启,您可以运行uname -r命令查看内核版本并按以下方式关闭napi_tx。
执行cat /sys/module/virtio_net/parameters/napi_tx,返回N代表napi_tx关闭成功。
缓解争抢情况
大规格的机型随着CPU核数的增多,会出现争抢情况影响Nginx性能,主要包括了针对html文件的争抢和套接字(Socket)的争抢,以下将对这两种争抢情况提供相应解决方案,以提高Nginx性能。
方案一:修改Nginx worker数并开启reuseport
Sever端部署Nginx服务后,您可以开启Nginx的reuseport选项,允许多个套接字(Socket)监听同一端口,从而减少争抢;也可以适当调整Nginx worker进程数以降低html访问文件的争抢,从而提高Nginx性能,不同规格的实例,Nginx性能最佳时的worker数如下。
修改Nginx worker数并开启reuseport的方法如下:
- 执行如下命令打开/etc/nginx/nginx.conf配置文件。
- vim /etc/nginx/nginx.conf
- 修改Nginx worker数并开启reuseport。
- 根据规格修改worker_processes的值。
-
- 在配置文件末尾添加以下内容开启reuseport。
- 按Esc退出编辑模式,输入:wq并按Enter键,保存并退出文件。
- systemctl restart nginx.service
方案二:安装irqbalance-ng
对于Nginx服务,推荐参考网卡中断绑定安装irqbalance-ng自动配置物理网卡中断,以达到中断负载均衡的效果,提升网络性能。 关闭sniffer
-
-
- 执行如下命令,确认是否具有dhclient进程。
- 回显如下,表示具有 dhclient 进程,执行如下命令终止 dhclient 进程即可关闭sniffer。
-