51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 929|回复: 0
打印 上一主题 下一主题

wrk性能测试工具的使用教程!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-10-9 16:58:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 草帽路飞UU 于 2022-10-9 17:01 编辑

工作中,项目设计之初或者是项目快要结束的时候,大佬就会问我们,这个服务性能测试的结果是什么,QPS 可以达到多少,RPS 又能达到多少?


  你自己写的接口性能可以满足未来生产环境的实际情况吗?有没有自己测试过自己接口的吞吐量等等。

  作为设计开发人员,这些问题不仅仅是用来面试,还是实实在在的落地在实际工作中很多项目上线初期用户量较小,表面上看是风平浪静,实则暗流涌动,慢慢的用户量上来之后,系统的瓶颈慢慢凸显。


曾经挖的坑,最后还是要我们自己来填,若不能及时填上,可能整个产品就这么断送了。

  今天一起来看看wrk轻量级的性能测试工具如何使用。

  性能测试相关名词

  ·QPS每秒查询率 (Query Per Second)

  每秒查询率 QPS 是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

  · 并发用户数

  指系统可以同时承载的正常使用系统功能的用户的数量。


  · 吞吐量 (Throughput)

  吞吐量是指系统在单位时间内处理请求的数量。

  · 响应时间 (RT)

  指系统对请求作出响应的时间。

  wrk 是什么

  wrk 是 github 的一个项目:github.com/wg/wrk




根据官方的说明,wrk 是一个HTTP基准测试工具。

  当运行在单个多核CPU上时,它能够产生巨大的负载。它结合了多线程设计和可伸缩的事件通知系统,如 epoll 和 kqueue 等等。

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



  wrk 如何使用

  那么 wrk 如何使用呢,我们就来实操一下看看效果 , 既然是 开源工具,下载安装编译的方式都很类似。

  1、下载 wrk 项目


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

  2、编译项目

  cd wrk

  make




  3、将编译出来的 wrk 可执行程序放到用户自己的 bin 目录下

   cp wrk /usr/local/sbin/

  4、这个时候,我们就可以开始使用 wrk 工具了

  咱们直接执行 wrk 来看看效果:


  # wrk

  Usage: wrk <options> <url>


    Options:


      -c, --connections <N>  Connections to keep open // 和服务器建立连接并保持的 TCP 连接数量  


      -d, --duration    <T>  Duration of test  // 具体的压测时间


      -t, --threads     <N>  Number of threads to use // 使用的线程数量


      -s, --script      <S>  Load Lua script file// 加载 lua 文件


      -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)




  上面的 N 表示数字参数,可以是 1k, 1M, 1G。

  T 表示时间参数,可以是 2s, 2m, 2h。


 
 尝试使用 wrk 工具

  我们使用 wrk 同样的参数来性能测试一下 掘金 和百度的地址。

  
·200个链接

  
· 8个线程

  
· 测试 40 s

 
先测试掘金的

  # wrk -c200 -t8 -d40 --latencyhttps://juejin.cn/

  Running 40s test @
https://juejin.cn/

    8 threads and 200 connections

    Thread Stats   Avg      Stdev     Max   +/- Stdev

      Latency     1.53s   481.41ms   2.00s    87.68%


      Req/Sec    10.27      7.50    70.00     73.61%


    Latency Distribution


       50%    1.67s


       75%    1.85s


       90%    1.95s


       99%    2.00s


    2406 requests in



40.05s, 476.65MB read

    Socket errors: connect 0, read 0, write 0, timeout 1797


  Requests/sec:     60.08


  Transfer/sec:     11.90MB




 

再测试百度的
  # wrk -c200 -t8 -d40 --latencyhttps://www.baidu.com

  Running 40s test @
https://www.baidu.com

    8 threads and 200 connections


    Thread Stats   Avg      Stdev     Max   +/- Stdev


      Latency   284.06ms  332.08ms   2.00s    86.02%


      Req/Sec    96.41     36.69   538.00     79.63%


    Latency Distribution


       50%  120.17ms


       75%  357.11ms


       90%  730.79ms


       99%    1.56s


    31088 requests in 40.07s, 466.95MB read


    Socket errors: connect 0, read 138, write 0, timeout 264


  Requests/sec:    775.87


  Transfer/sec:     11.65MB








解释上面测试报告相关字段的含义:

  
·Latency 延迟

  
· Avg 平均值

  
· Stdev 标准差

  
· +/- Stdev 标准差占比

  
· Requests/sec 平均每秒处理的请求数,通常说的 qps 这里可以看出 掘金是  60.08 , 百度是  775.87 ,差别还是有的

  实践完毕之后,我们来捋一捋 wrk 的优势和劣势。


  优势:

  wrk 是轻量级性能测试工具,用起来非常方便,且安装也很简单,学习成本低。

  根据官方介绍,我们知道 wrk 基于系统自带的高性能 I/O 机制,如 epoll, kqueue。


  这些机制是利用异步的事件驱动框架 多路 IO 复用来提高并发性能的。


  劣势:

  仅支持单机压测,如果需要测试多台机器,wrk 就不合适了。












本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-21 23:39 , Processed in 0.071044 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表