Http benchmarking 工具 wrk 基本使用

Intro

wrk 是一款现代HTTP基准测试工具,能够在单个多核CPU上运行时产生显着负载。它将多线程设计与可扩展事件通知系统(如epoll和kqueue)结合在一起。

官方描述:

wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue.

An optional LuaJIT script can perform HTTP request generation, response processing, and custom reporting. Details are available in SCRIPTING and several examples are located in scripts/.

wrk 使用了 epoll,使得可以通过较少的线程来实现较多的连接,而用 ab 测试的时候就会发现很难达到特别高的并发,而 wrk 则利用 i/o 复用来实现较少的线程达到较高的并发。

Install

wrk支持大多数类UNIX系统,不支持windows。需要操作系统支持 LuaJIT 和 OpenSSL,不过不用担心,大多数类Unix系统都支持。安装wrk非常简单,只要从github上下载wrk源码,在项目路径下执行 make 命令即可。

在 win10 bash 上安装参考 :https://www.cnblogs.com/savorboard/p/wrk.html直接在 linux 上安装参考:https://www.cnblogs.com/jiftle/p/7158291.html

不想安装也可以直接使用 docker ,参考 williamyeh/wrk

Use

  • 直接使用安装的 wrk,使用示例如下:

  1. wrk -t 400 -c 4000 --timeout 10s -d 10s --latency http://localhost:12345/api/values

  • 使用 docker

  1. docker run --rm williamyeh/wrk -t 400 -c 4000 --timeout 10s -d 10s --latency http://localhost:12345/api/values

参数详解:

在 bash 中输入 wrk 即可获取到详细的参数说明:

  1. -c, --connections(连接数): total number of HTTP connections to keep open with each thread handling N = connections/threads

  2. -d, --duration(测试持续时间): duration of the test, e.g. 2s, 2m, 2h

  3. -t, --threads(线程): total number of threads to use

  4. -s, --script(脚本): LuaJIT script, see SCRIPTING

  5. -H, --header(头信息): HTTP header to add to request, e.g. "User-Agent: wrk"

  6. --latency(响应信息): print detailed latency statistics

  7. --timeout(超时时间): record a timeout if a response is not received within this amount of time.

来对必应做一个测试

  1. wrk -t8 -c200 -d30s --latency "http://www.bing.com"

输出:

  1. Running 30s test @ http://www.bing.com

  2. 8 threads and 200 connections

  3. Thread Stats Avg Stdev Max +/- Stdev

  4. Latency 46.67ms 215.38ms 1.67s 95.59%

  5. Req/Sec 7.91k 1.15k 10.26k 70.77%

  6. Latency Distribution

  7. 50% 2.93ms

  8. 75% 3.78ms

  9. 90% 4.73ms

  10. 99% 1.35s

  11. 1790465 requests in 30.01s, 684.08MB read

  12. Requests/sec: 59658.29

  13. Transfer/sec: 22.79MB

结果分析:

  1. Running 30s test @ http://www.bing.com (压测时间30s)

  2. 8 threads and 200 connections (共8个测试线程,200个连接)

  3. Thread Stats Avg Stdev Max +/- Stdev

  4. (平均值) (标准差)(最大值)(正负一个标准差所占比例)

  5. Latency 46.67ms 215.38ms 1.67s 95.59%

  6. (延迟)

  7. Req/Sec 7.91k 1.15k 10.26k 70.77%

  8. (处理中的请求数)

  9. Latency Distribution (延迟分布)

  10. 50% 2.93ms

  11. 75% 3.78ms

  12. 90% 4.73ms

  13. 99% 1.35s (99分位的延迟)

  14. 1790465 requests in 30.01s, 684.08MB read (30.01秒内共处理完成了1790465个请求,读取了684.08MB数据)

  15. Requests/sec: 59658.29 (平均每秒处理完成59658.29个请求)

  16. Transfer/sec: 22.79MB (平均每秒读取数据22.79MB)

注:如果 url 不带 & 参数可以不需要加加引号,如:"url",但是如果有多个get参数有 &则需要加上双引号才能请求完整的地址,否则会把 & 后面的参数丢失。

Reference

  • https://hub.docker.com/r/williamyeh/wrk/

  • https://github.com/wg/wrk

  • https://cloud.tencent.com/developer/article/1346649

Http benchmarking 工具 wrk 基本使用相关推荐

  1. Http压测工具wrk使用指南【转】

    用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...

  2. 性能测试工具 wrk 安装与初步使用

    开源的性能测试工具 wrk,简单易用,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以支持lua脚本来创建复杂 ...

  3. 性能测试工具-WRK

    性能测试工具-WRK使用 1.简介 wrk是一款针对http协议的基准测试工具,它能够在单机多核CPU的条件下,使用系统自带的高性能 I/O机制,如epoll,kqueue等,通过多线程和事件模式,对 ...

  4. 技术丨压测工具wrk和Artillery的比较

    本文作者:Linkflow首席架构师 – 王鼎,11年软件研发经验,6年SaaS(基于公有云或私有云),熟悉ERP, CDP, omin渠道销售解决方案.参与SaaS产品的大型开发,成员400余人.在 ...

  5. 压测工具wrk和Artillery的比较

    这两天抽空使用了一下两款压测工具 wrk Artillery 并且通过两款工具对产品的两个环境进行了测试 工具比较 wrk wrk自身性能就非常惊人,使用epoll这种多路复用技术,所以可以用少量的线 ...

  6. Http压测工具wrk使用指南

    用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...

  7. HTTP性能测试工具wrk安装及使用

    wrk 是一个很简单的 http 性能测试工具,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于HTTP性能测试工具,但是比 ab 功能更加强大,并且可以支持l ...

  8. Linux下性能压测工具WRK,性能测试神器 wrk 使用教程

    wrk 是一个类似 ab(apache bench).jmeter 的压力测试工具,底层基于 epoll 和 kqueue 实现,能充分利用 cpu 资源,降低测试工具本身性能开销对测试结果准确性的影 ...

  9. HTTP压测工具Wrk 介绍和使用

    介绍 wrk是一款简单的HTTP压测工具,托管在Github上,https://github.com/wg/wrk. wrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操 ...

最新文章

  1. 独家|OpenCV 1.2 如何用OpenCV扫描图像、查找表和测量时间(附链接)
  2. 第八周项目实践2 建立连串算法库
  3. 月活675万 三翼鸟以三大能力“重建”行业赛道
  4. 自定义Cassandra数据类型
  5. 793. 阶乘函数后K个零 golang
  6. [wbia 2.2] 对检索结果进行评估
  7. 网络中的计算机如果加入家庭组,win10系统加入其他计算机家庭组的操作方法
  8. 如何在android进行ltp测试,Android系统完整性度量架构IMA-EVM
  9. 启动两个tomcat,两个端口,两个tomcat都启动时回显示端口被占用
  10. 人工智能翻译之间的对决:谷歌为什么败给了有道?
  11. linux命令 screen的简单使用
  12. Quickadmin:基于ThinkPhp6+Vue+ElementUI后台管理框架
  13. 视频必备资源:免费音效素材下载
  14. 第三方服务之Bmob——快速入门
  15. 这就是iPhone 6的屏幕?
  16. 支付宝小程序分享转发
  17. 通用寄存器与标志位寄存器OF/DF/IF/TF/SF/ZF/AF/PF
  18. 解决页面刷新数据丢失,数据持久化问题
  19. 使用Node+websocket实现简易1v1聊天室(前端+服务器)
  20. HIDL服务死亡通知实例 hidl_death_recipient

热门文章

  1. easy html5 - Jquery mobile
  2. 原创:PHP内核研究:HASH表和变量
  3. [轉]数据挖掘工具的选择
  4. Team photo的新api
  5. apple默认备份位置_如何将Apple Maps默认设置为步行路线
  6. vue-typescript
  7. 让Visual Studio 2013为你自动生成XML反序列化的类
  8. 获取iOS 设备上崩溃日志 (Crash Log)的方法
  9. C#类类型“.NET技术”
  10. Asp.net中的HttpModule和HttpHandler的简单用法