网站首页 > 技术教程 正文
概述
Nginx 默认安装下, 无论怎么压测, 其 CPU 利用率都无法直接拉满, 其利用率最大为 45% 左右, 本文便是从实践出发, 为解决这个疑问而来。
压测工具 wrk 采用多线程 + 网络异步 IO 模型, 网络异步 IO 可以使得系统使用很少的线程模拟大量的网络连接以增大并发量; 运行 wrk 的机器必须有足够数量的可用临时端口,并且应该快速回收关闭的套接字。为了处理初始连接突发,服务器的 listen backlog 应该大于正在测试的并发连接数
1、部署环境介绍
CentOS Linux release 7.9.2009 (5.4.186-1.el7.elrepo.x86_64)
nginx version: 1.20.2
wrk version: 4.2.0
CPU: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
KVM 虚机配置: 20 vCPU 、8G RAM
请求页面为 Nginx 默认页面: /usr/share/nginx/html/index.html
部署
1、nginx 安装、调整内核参数
yum install nginx
systemctl stop firewalld.service
cat > /etc/sysctl.conf << EOF
net.ipv4.tcp_max_syn_backlog = 1024
net.core.somaxconn = 1024
EOF
sysctl -p
2、wrk 编译安装
git clone https://github.com/wg/wrk.git
cd wrk && make
cp wrk /usr/bin/wrk && chmod +x /usr/bin/wrk
3、Nginx 主要配置项 /etc/nginx/nginx.conf
# 配置 worker 进程数、与 vCPU 数一致, 并进行自动绑定
worker_processes auto;
worker_cpu_affinity auto;
events {
use epoll;
worker_connections 1024;
}
http {
...
sendfile on;
tcp_nopush on; # 必须在 sendfile 开启模式才有效, 可提高一倍的并发量
access_log off;
...
server {
listen 80 backlog=1024;
...
}
}
# sendfile on:是否开启高效文件传输模式, 对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载
验证
1、启动 20 个线程, 保持 800 个 http 连接, 持续压测时间 60s
wrk -t 20 -c 800 -d 60s --latency http://192.168.31.11
> Running 1m test @ http://192.168.31.11
> 20 threads and 800 connections
> Thread Stats Avg Stdev Max +/- Stdev
> Latency 1.59ms 0.93ms 40.13ms 46.35%
> Req/Sec 25.25k 17.32k 83.60k 85.12%
> Latency Distribution
> 50% 1.64ms
> 75% 2.53ms
> 90% 2.81ms
> 99% 3.42ms
> 30180907 requests in 1.00m, 23.89GB read
> Requests/sec: 502179.99
> Transfer/sec: 407.08MB
// 结论说明:
// 单个线程 QPS 平均大小 25.25k, 50% 的请求在 1.64 毫秒内完成
// 可达到每秒 50w 请求, 带宽 3.3Gbps, CPU 利用率 97.2%
// 实时查看网络 pps、bandwidth
sar -n DEV 1
> 10:33:36 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
> 10:33:37 AM eth0 508080.22 508068.13 51972.99 451661.46 0.00 0.00 0.00
猜你喜欢
- 2024-10-10 Nginx学习笔记(02)配置文件main段核心参数用法
- 2024-10-10 Nginx配置及应用场景之高级配置(nginx配置cgi)
- 2024-10-10 梅林固件路由通过Entware安装ONMP建立网站步骤方法
- 2024-09-14 Nginx最全详解(万字图文总结)(nginx1)
- 2024-09-14 运维基础服务篇:Nginx配置文件介绍
- 2024-09-14 Nginx-config的配置(nginx 配置说明)
- 2024-09-14 使用javascript轻松扩展nginx的功能
- 2024-09-14 Nginx配置文件详解(nginx的配置文件)
- 2024-09-14 Nginx总结(八)启用Nginx Status及状态参数详解
- 2024-09-14 Nginx基础入门004(nginx 教程)
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)