前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初探单机压测工具wrk2

初探单机压测工具wrk2

原创
作者头像
AIOPS
修改2023-10-15 16:26:29
8940
修改2023-10-15 16:26:29
举报
文章被收录于专栏:高可用

1. 背景说明

在之前的文章CLB是怎么均衡client流量的-长连接篇中,实验使用的是pts这款压测工具,实际压测前,有调研wrk2这个优秀的单机压测工具,但场景方面不是很匹配,就没有采用。这里记录一下这个工具的用法。

2. 什么是wrk2

wrk2是一个主要基于wrk的HTTP基准测试工具,与 apache bench(以下简称 ab)类似,都是单机上的压测工具,其使用多线程设计来进行请求的生成。相比 ab,wrk 最值得称道的应该是它的自定义脚本功能:wrk 支持使用 lua 脚本来进行 HTTP 请求生成、响应处理以及自定义压测报告等。除此之外,还有两个特点,也是我选择它的原因

高并发能力:wrk2使用多线程设计,能够并发地生成HTTP请求,从而模拟大量的客户端请求。这允许它更快地发送请求并模拟高负载情况。

分析优化能力:wrk2提供更精确的延时统计,包括高分位数(如99.9999%'ile),这使得它更适用于分析和优化性能。

3. wrk2安装

截止我写这篇文章,CentOS系的操作系统,还没有把wrk2加入默认的包管理系统,所以如果要使用它,我们需要编译安装,下面列出简要的步骤。

3.1 安装步骤

1、 下载最新安装包

代码语言:javascript
复制
wget https://github.com/Kong/wrk2/archive/refs/heads/master.zip

2、 解压缩

代码语言:javascript
复制
unzip master.zip

3、 进入目录并编译安装

代码语言:javascript
复制
cd wrk2-master
make

4、 查看编译后的目录结果,看到新生成的wrk文件,即代表安装成功

5、 将wrk文件移动到Linux命令查找路径

代码语言:javascript
复制
mv wrk /usr/bin

3.2 安装过程中的错误处理

安装过程中,仅遇到了openssl开发库不存在的报错,报错信息如下:

代码语言:javascript
复制
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,顺利完成。命令如下:

代码语言:javascript
复制
yum install openssl-devel

wrk2命令参数概览

执行wrk --help命令,出现如下的提示

代码语言:javascript
复制
[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数量来

wrk2使用

我们用wrk来尝试完成上篇文章的任务,使用命令如下

代码语言:javascript
复制
wrk -t2 -c100 -d30s -R25000 http://10.0.100.38/

输出结果如下,整体说明比较直观

结论

从试用下来,发下wrk在单机压测时比较好使,但涉及到高并发模拟、接口延迟较大时,会把本机资源耗尽,故采用了分布式的云压测工具。

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景说明
  • 2. 什么是wrk2
  • 3. wrk2安装
    • 3.1 安装步骤
      • 3.2 安装过程中的错误处理
      • wrk2命令参数概览
      • wrk2使用
      • 结论
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档