基准测试工具: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、示例脚本

[[email protected] wrk]# ./wrk -t4 -c100 -d60s --latency http://www.cnblogs.com/imyalost
Running 1m test @ http://www.cnblogs.com/imyalost
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   196.87ms  318.88ms   1.90s    86.33%
    Req/Sec   316.86    220.75     3.19k    75.19%
  Latency Distribution
     50%    5.73ms
     75%  259.62ms
     90%  615.77ms
     99%    1.47s
  73434 requests in 1.00m, 11.06MB read
  Socket 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

时间: 2024-10-14 12:05:42

基准测试工具:Wrk初识的相关文章

性能测试工具 wrk 使用教程

一.简介 WRK 是一款针对HTTP基准测试工具,即使在单个多核CPU上运行时,也能够对目标机器产生大量负载.原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等.其实它是复用了 redis 的 ae 异步事件驱动框架.说说 wrk 的优缺点吧: 优点:单机并发能力强,极少的线程数即可模拟大量的并发请求. 缺点:不支持分布式,对于上万用户的并发测试显得力不从心.lua 脚本学习成本较高. 二.安装 执行以下命令: git clone http

mysql基准测试工具tpcc-mysql安装、使用、结果解读

TPCC是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统,tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于MySQL基准测试.其源码放在launchpad上,用bazaar管理,项目地址:https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql,专门转对mysql的基准测试工具,模拟电商业务流程.但是tpcc-mysql的结果并未获得TP

JS-010-覆盖率测试工具 JSCoverage 初识

后续更新,敬请期待...非常感谢! 至此, JS-010-覆盖率测试工具 JSCoverage 初识 顺利完结,希望此文能够给初学 JavaScript 的您一份参考. 最后,非常感谢亲的驻足,希望此文能对亲有所帮助.热烈欢迎亲一起探讨,共同进步.非常感谢! ^_^

JS-009-单元测试工具 Qunit 初识

后续更新,敬请期待...非常感谢! 至此, JS-009-单元测试工具 Qunit 初识 顺利完结,希望此文能够给初学 JavaScript 的您一份参考. 最后,非常感谢亲的驻足,希望此文能对亲有所帮助.热烈欢迎亲一起探讨,共同进步.非常感谢! ^_^

tpcc-mysql &nbsp; mysql基准测试工具使用文档

mysql基准测试工具tpcc-mysql的安装和使用1.tpcc-mysql介绍:TPC(Tracsaction Processing Performance Council) 事务处理性能协会是一个评价大型数据库系统软硬件性能的非盈利的组织,TPC-C是TPC协会制定的,用来测试典型的复杂OLTP系统的性能.Tpcc-mysql是percona基于tpcc衍生出来的产品,专用于mysql基准测试.2.官网地址:https://github.com/Percona-Lab/tpcc-mysql

基准测试工具

基准测试工具可以用来对数据库或者操作系统调优后的性能进行对比.MySQL数据库本身提供了一些比较优秀的工具,这里介绍另外两款更优秀.更常用的工具:sysbench和mysql-tpcc. sysbench sysbench是一个模块化的.跨平台的.多线程基准测试工具,主要用于测试各种不同系统参数下的数据库负载情况. 它主要包括以下几种测试方式: CPU性能. 磁盘IO性能. 调度程序性能. 内存分配及传输速度. POSIX线程性能. 数据库OLTP基准测试. sysbench的数据库OLTP测试

MYSQL常用基准测试工具之mysqlslap的使用

mysqlslap是MYSQL自带的基准测试工具,无需单独安装即可使用.下面记录一下在服务器上用 mysqlslap做MYSQL基本测试的步骤. 1. cd /usr/local/mysql/bin/ 进入mysql安装目录的bin目录下,我的mysql安装在 /usr/local下. 2.   mysqlslap --concurrency=1,50,100 --iterations=3 --number-int-cols=5 --number-char-cols=5 --auto-gener

MySQL基准测试工具sysbench安装

sysbench简介 该工具目前有三个版本0.4, 0.5和1.0, 版本间语法和参数上有些许差别. 本文为最新版本1.0.9, 其是基于LuaJIT的多线程基准测试工具, 常用于数据库基准测试; 另, 还可对操作系统关键子系统进行测试. 除內建测试, 还可编写Lua脚本, 实现特定业务的测试. sysbench下载 链接, https://github.com/akopytov/sysbench 安装依赖环境 1. yum -y install make automake libtool pk

myql基准测试工具Sysbench

一.Sysbench介绍 SysBench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.它主要包括以下几种方式的测试: 1.cpu性能 2.磁盘io性能 3.调度程序性能 4.内存分配及传输速度 5.POSIX线程性能 6.数据库性能(OLTP基准测试) Sysbench的oltp主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench的数据库测试支持MySQL.PostgreSQL.Oracle.相比0.4版本,后续的版本olt