基准测试工具:Wrk初识

 

最近和同事聊起常用的一些压测工具,谈到了Apache ab、阿里云的PTS、Jmeter、Locust以及wrk各自的一些优缺点和适用的场景类型。

这篇博客,简单介绍下HTTP基准测试工具wrk的基本使用方法。。。

一、压测工具对比

工具名称 类型 多协议支持 优缺点 适用人群&场景
Apache ab 开源 HTTP  Apache自带源生测试工具,安装部署简单,不适合多协议及复杂场景  开发:单机&单接口性能基准验证 
PTS 商业 多协议(支持不太好)  阿里云配套收费压测工具,支持多协议链路压测,功能完善   技术人员:基准&链路&高并发
Jmeter 开源 多协议  使用率高&学习成本低,多协议复杂场景支持良好,受限于机制,资源损耗较高  技术人员:多场景&万级以下并发全场景 
Locust  开源  多协议(需二次开发)  python开源压测框架,支持多协议&复杂场景(需二次开发,定制化)  技术人员:性能测试&支持程度取决于定制开发 
Wrk  开源  HTTP  HTTP基准测试工具,高并发低损耗,安装部署简单,不适合多协议及复杂场景  开发:单机&单接口性能基准验证  

二、简介及安装

1、简介

Wrk是一个支持HTTP协议的基准测试工具,结合了多线程设计和可扩展事件通知,底层封装epoll(linux)和kqueue(bsd),能用较少线程生成大量并发请求(使用了操作系统特定的高性能io机制)。

源生支持LuaJIT脚本,可以执行HTTP发起请求、响应处理和自定义测试报告;SCRIPTING有详细说明,并且scripts中提供了几个示例。

GitHub地址:Wrk

2、安装

Point:wrk托管与github,前先安装Git;依赖gcc和OpenSSL(阿里云Centos服务默认已有)库,如下载报错,安装即可!命令如下:

# 下载命令
git clone https://github.com/wg/wrk.git
# 进入wrk文件夹
cd wrk
# 编译
make

编译需要一定时间,耐心等待即可。编译成功后,示例如下:

三、示例demo

1、参数说明

Usage: wrk <options> <url>                            Options:
# 脚本开启的HTTP连接数                                          -c, --connections <N>  Connections to keep open
# 测试脚本执行的时长   -d, --duration      <T>  Duration of test
# 测试脚本使用的线程数        -t, --threads        <N>  Number of threads to use
# 加载Lua脚本文件                          -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 

 2、示例脚本

[root@localhost wrk]# ./wrk -t4 -c100 -d60s --latency http://www.cnblogs.com/imyalost
Running 1m test @ http://www.cnblogs.com/imyalost4 threads and 100 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency   196.87ms  318.88ms   1.90s    86.33%Req/Sec   316.86    220.75     3.19k    75.19%Latency Distribution50%    5.73ms75%  259.62ms90%  615.77ms99%    1.47s 73434 requests in 1.00m, 11.06MB readSocket errors: connect 0, read 2, write 0, timeout 267
Requests/sec:   1222.07
Transfer/sec:    188.51KB

结果解析:

4 threads and 100 connections :4个线程,发起100个http连接请求;

Thread Stats Avg Stdev Max +/- Stdev :测试结果统计(精简版jmeter的聚合报告),分别是:平均值、标准偏差、最大值、偏差比(值越高表示测试结果离散程度越高,性能波动较大);

Latency :响应时间分布(即百分比响应时间范围);

Req/Sec :每秒完成的请求数;

Latency Distribution :如上面的示例结果,分别代表50/75/90/99%的响应时间在多少ms以内;

73434 requests in 1.00m, 11.06MB read :本次测试共计在1min内发起73434个请求,总计读取11.06MB的数据;

Socket errors: connect 0, read 2, write 0, timeout 267 :本次测试中,连接失败0个,读取错误2个,超时267个;

Requests/sec :所有线程平均每秒钟完成1222.07个请求;

Transfer/sec :平均每秒读取188.51KB数据(吞吐量);

3、更多用法

前文提到了wrk支持LuaJIT脚本,可以执行HTTP发起请求、响应处理和自定义测试报告,wrk提供的几个lua函数作用如下:

是不是发现和selenium自动化很像,特别是setup和init函数(手动狗头)。。。

以上就是关于基准测试工具Wrk的简单用法和几种常见的压测工具对比,上面的脚本仅是个demo,具体使用方法请自行实践。。。

其实吧,我觉得这个工具更适合开发童鞋写好一个新的接口后,自己测试一下,这样也不用等出性能问题了才想起来要找性能测试同学压测。。。

 
转载出处:https://www.cnblogs.com/imyalost/p/11405797.html(老_张)

转载于:https://www.cnblogs.com/zhengyao9236/p/11572961.html

基准测试工具(压测工具):wrk---高并发、损耗低,安装简单 (一)相关推荐

  1. 多线程与高并发(九):单机压测工具JMH,单机最快MQ - Disruptor原理解析

    单机压测工具JMH JMH Java准测试工具套件 什么是JMH 官网 http://openjdk.java.net/projects/code-tools/jmh/ 创建JMH测试 1.创建Mav ...

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

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

  3. 性能压测工具:wrk

    一般我们压测的时候,需要了解衡量系统性能的一些参数指标,比如. 1.系统性能的维度 1.1 延迟 简单易懂.green:一般指响应时间 95线:P95.平均100%的请求中95%已经响应的时间 99线 ...

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

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

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

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

  6. web版本 开源压测工具_Web服务压测神器wrk

    wrk是一款开源的高性能http压测工具(也支持https),很是小巧,能够执行文件只有3M(其中主要是luajit和openssl占用绝大多数空间),别看核心代码3-5年没更新了,但依旧很是好用.虽 ...

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

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

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

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

  9. 【腾讯优测干货分享】从压测工具谈并发、压力、吞吐量

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/580d914e07b7fc1c26a0cf7c 前言 随着部门业务的拓展,我们有 ...

最新文章

  1. 小测试来检验一下你原型链理解的怎么样。
  2. 《Android进阶之光》--多线程编程
  3. 这一次,用数据解读玩家行为,用实力拿下预测大奖!
  4. 如何在Node.js的httpServer中接收前端发送的arraybuffer数据
  5. SQLyog创建表示的bug
  6. 大话编程之解决了防止用户重复登陆和session超时【asp.net】
  7. 并查集之Wireless Network(一)
  8. 利用机器学习进行恶意代码分类
  9. linux热迁移137error VMware vCenter Converter 问题小结
  10. TCP/UDP端口列表(转)
  11. layui日期插件用法
  12. 管理分区表:拆分、添加与交换分区
  13. 2020软件工程专硕考研经验指导
  14. componentWillUnmount父子组件触发先后
  15. 如何将废旧显示器改造为家用电视机
  16. 在面试时候,如何简明扼要简述产品流程
  17. [附源码]Java计算机毕业设计SSM高校教室管理系统
  18. Matlab实现图像压缩
  19. spdlog日志库说明文档(超详细)
  20. 罗森伯格亮相2012北京通讯展

热门文章

  1. 如何启动和退出w8ndows,Windows 8优化设置技巧,加快你的win8运行速度
  2. CSMAR海外直接投资数据2013-2017
  3. 课堂笔记(老师要求的作业)
  4. 1060 爱丁顿数 (25 分)
  5. Saltstack中Grains静态数据系统和Pillar动态数据系统
  6. CSS 背景 图片自适应
  7. 域名解析,一个域名可以对应多个IP地址(基于DNS的负载均衡)
  8. c/c++判断NULL指针
  9. Android-超好用的播放器——ijkplayer
  10. 接口测试(筑基期>>>结丹期)