侧边栏壁纸
博主头像
蔡关荣博客 博主等级

行动起来,活在当下

  • 累计撰写 19 篇文章
  • 累计创建 9 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

HTTP 压力测试工具 wrk

Administrator
2020-07-18 / 0 评论 / 0 点赞 / 7 阅读 / 0 字

wrk是一个三方 HTTP 压力测试工具,当在单个多核 CPU 上运行时,能够产生大量负载。它结合了多线程设计和可扩展的事件通知系统,例如 epoll 和 kqueue。

可选的 LuaJIT 脚本可以执行 HTTP 请求生成,响应处理和自定义报告

安装:

git clone https://github.com/wg/wrk.git 

cd wrk && make 

从仓库拉代码可能比较慢,需要等一会儿

安装完成以后 输入wrk,如果看到以下输入就安装成功了

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      

        --latency          Print latency statistics   

        --timeout     <T>  Socket/request timeout     

    -v, --version          Print version details      

                                                      

  Numeric arguments may include a SI unit (1k, 1M, 1G)

  Time arguments may include a time unit (2s, 2m, 2h)

翻译成中文

使用方法: wrk <选项> <被测HTTP服务的URL>                           

  Options:                                           

    -c, --connections <N>  跟服务器建立并保持的TCP连接数量 

    -d, --duration    <T>  压测时间          

    -t, --threads     <N>  使用多少个线程进行压测,压测时,是有一个主线程来控制我们设置的n个子线程间调度  

                                                    

    -s, --script      <S>  指定Lua脚本路径      

    -H, --header      <H>  为每一个HTTP请求添加HTTP头     

        --latency          在压测结束后,打印延迟统计信息  

        --timeout     <T>  超时时间    

    -v, --version          打印正在使用的wrk的详细版本信                                              

  <N>代表数字参数,支持国际单位 (1k, 1M, 1G)

  <T>代表时间参数,支持时间单位 (2s, 2m, 2h)

简单使用:

wrk -t12 -c100 -d30s https://swoole.iscgr.cn

测试结果:

[root@VM-142-222-centos wrk]# wrk -t4 -c100 -d30s http://swoole.iscgr.cn

Running 30s test @ http://swoole.iscgr.cn

  4 threads and 100 connections

  Thread Stats   Avg      Stdev     Max   +/- Stdev

    Latency   160.54ms  195.43ms   1.24s    84.17%

    Req/Sec   264.61     93.14   747.00     75.06%

  31631 requests in 30.03s, 4.55MB read

Requests/sec:   1053.32

Transfer/sec:    155.28KB

参数解释:

4 threads and 100 connections

开启4个线程 100个连接(这里不是一个线程对应一个连接)

latencyReq/Sec

代表单个线程的统计数据,latency代表延迟时间,Req/Sec代表单个线程每秒完成的请求数,他们都具有平均值, 标准偏差, 最大值, 正负一个标准差占比。一般我们来说我们主要关注平均值和最大值

31631 requests in 30.03s, 4.55MB read

在30秒之内总共有31631个请求,总共读取4.55MB数据

Requests/sec和Transfer/sec

所有线程平均每秒钟完成了1053.32个请求,每秒钟读取155.28KB数据量

如果需要查看相应时间 在命令上增加参数 --latency

wrk -t4 -c100 -d30s --latency  http://swoole.iscgr.cn

结果如下:

[root@VM-142-222-centos wrk]# wrk -t4 -c100 -d30s --latency  http://swoole.iscgr.cn

Running 30s test @ http://swoole.iscgr.cn

  4 threads and 100 connections

  Thread Stats   Avg      Stdev     Max   +/- Stdev

    Latency   165.48ms  206.58ms   1.97s    84.72%

    Req/Sec   265.49     94.24   750.00     75.00%

  Latency Distribution

     50%   37.56ms

     75%  267.43ms

     90%  501.98ms

     99%  801.05ms

  31752 requests in 30.03s, 4.57MB read

Requests/sec:   1057.29

Transfer/sec:    155.87KB

wrk作为http压测还是非常简便的,后面再介绍下Apache 自带的压力测试工具`ab`

0

评论区