nginx wrk benchmark
什么是nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器以及电子邮件代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。
什么是wrk
wrk 是一款针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载。
nginx性能测试
概述
基本上,所有后端的服务的接入,入口都是 Nginx 或经过 Nginx ,所以它的性能就会尤其重要。
测试 Nginx ,主要测试 HTTP 接口的处理能力。
HTTP 接口的测试工具有如下几个:
- Wrk
- Apache Benchmark (ab)
- Locust
- Jmeter
因为测试nginx只关注 QPS(每秒响应请求数) 的,所以选择了 Wrk 作为测试工具
wrk的安装
git clone https://github.com/wg/wrk.git
cd wrk
make
使用指南
wrk的参数列表
-c
:需要模拟的连接数。-t
:并发的线程数。
- 这里表示的是,使用
-t
个线程,模拟-c
个并发请求。wrk 使用异步非阻塞的 io 的方式,并不是用线程去模拟并发连接,因此不需要设置很多的线程,一般根据 CPU 的核心数量设置即可。 -d
:测试的测试时长。-s
:指定 Lua 脚本的路径。--header
:指定请求带的 Header 参数。--latency
:是否打印请求延迟统计。--timeout
:设置请求超时时间。-v
:显示 wrk 版本信息。
案例
./wrk -t50 -c400 -d30s http://127.0.0.1
-t50
参数,设置 50 并发线程。-c400
参数,设置 400 连接。-d30s
参数,设置执行 30s 的时长的 HTTP 请求。http://127.0.0.1
参数,请求本地的 Nginx 服务。
执行结果
QPS = requests/cost_time
= 1084727/30.10
通过QPS可以评估nginx的性能
参考链接
Nginx 是什么、为什么、怎么用? - 知乎 (zhihu.com)