在之前的文章CLB是怎么均衡client流量的-长连接篇中,实验使用的是pts这款压测工具,实际压测前,有调研wrk2这个优秀的单机压测工具,但场景方面不是很匹配,就没有采用。这里记录一下这个工具的用法。
wrk2是一个主要基于wrk的HTTP基准测试工具,与 apache bench(以下简称 ab)类似,都是单机上的压测工具,其使用多线程设计来进行请求的生成。相比 ab,wrk 最值得称道的应该是它的自定义脚本功能:wrk 支持使用 lua 脚本来进行 HTTP 请求生成、响应处理以及自定义压测报告等。除此之外,还有两个特点,也是我选择它的原因
高并发能力:wrk2使用多线程设计,能够并发地生成HTTP请求,从而模拟大量的客户端请求。这允许它更快地发送请求并模拟高负载情况。
分析优化能力:wrk2提供更精确的延时统计,包括高分位数(如99.9999%'ile),这使得它更适用于分析和优化性能。
截止我写这篇文章,CentOS系的操作系统,还没有把wrk2加入默认的包管理系统,所以如果要使用它,我们需要编译安装,下面列出简要的步骤。
1、 下载最新安装包
wget https://github.com/Kong/wrk2/archive/refs/heads/master.zip
2、 解压缩
unzip master.zip
3、 进入目录并编译安装
cd wrk2-master
make
4、 查看编译后的目录结果,看到新生成的wrk文件,即代表安装成功
5、 将wrk文件移动到Linux命令查找路径
mv wrk /usr/bin
安装过程中,仅遇到了openssl开发库不存在的报错,报错信息如下:
make[1]: Leaving directory `/root/wrk2-master/deps/luajit/src'
CC src/wrk.c
In file included from src/wrk.c:3:0:
src/wrk.h:11:25: fatal error: openssl/ssl.h: No such file or directory
#include <openssl/ssl.h>
^
compilation terminated.
make: *** [obj/wrk.o] Error 1
修复办法是安装openssl-devel开发库,安装成功再次make,顺利完成。命令如下:
yum install openssl-devel
执行wrk --help命令,出现如下的提示
[root@VM-100-38-centos wrk2-master]# wrk --help
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use
-s, --script <S> Load Lua script file
-H, --header <H> Add header to request
-L --latency Print latency statistics
-U --u_latency Print uncorrected latency statistics
--timeout <T> Socket/request timeout
-B, --batch_latency Measure latency of whole
batches of pipelined ops
(as opposed to each op)
-v, --version Print version details
-R, --rate <T> work rate (throughput)
in requests/sec (total)
[Required Parameter]
-A, --cacert <S> CA certificate file
-C, --cert <S> Client certificate file
-K, --key <S> Client key file
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
压测中常用的几个参数如下:
-c 并发连接数
-d 压测时长
-R 模拟的qps
-t 启用的线程数,根据设备CPU数量来
我们用wrk来尝试完成上篇文章的任务,使用命令如下
wrk -t2 -c100 -d30s -R25000 http://10.0.100.38/
输出结果如下,整体说明比较直观
从试用下来,发下wrk在单机压测时比较好使,但涉及到高并发模拟、接口延迟较大时,会把本机资源耗尽,故采用了分布式的云压测工具。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。