-
性能压测工具-wrk
一、简介:
是一款针对协议的基准测试工具,它能够在单机多核的条件下,使用系统自带的高性能机制,通过多线程和事件模式,对目标机器产生大量的负载。
-
优势
- 轻量级性能测试工具
- 安装使用简单
- 基于系统自带的高性能I/O机制,如epoll,kqueue,利用异步的事件驱动框架,通过很少的线程就可以压出很大的并发
-
劣势
- wrk 目前仅支持单机压测,不是用来取代 JMeter, LoadRunner 等专业的测试工具。
二、参数说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Usage: wrk <options> <url> Options: -c, --connections <N> 跟服务器建立并保持的TCP连接数量 -d, --duration <T> 压测时间 -t, --threads <N> 使用多少个线程进行压测 -s, --script <S> 指定Lua脚本路径 -H, --header <H> 为每一个HTTP请求添加HTTP头 --latency 在压测结束后,打印延迟统计信息 --timeout <T> 超时时间 -v, --version 打印正在使用的wrk的详细版本 Numeric arguments may include a SI unit (1k, 1M, 1G) Time arguments may include a time unit (2s, 2m, 2h) |
例如:
1
|
wrk -t8 -c200 -d30s --latency "http://www.bing.com" |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<br> Running 30s test @ http: //www.bing.com (压测时间30s) 8 threads and 200 connections (共 8 个测试线程, 200 个连接) Thread Stats Avg Stdev Max +/- Stdev (平均值) (标准差)(最大值)(正负一个标准差所占比例) Latency 46 .67ms 215 .38ms 1 .67s 95.59 % (延迟) Req/Sec 7 .91k 1 .15k 10 .26k 70.77 % (处理中的请求数) Latency Distribution (延迟分布) 50 % 2 .93ms 75 % 3 .78ms 90 % 4 .73ms 99 % 1 .35s ( 99 分位的延迟) 1790465 requests in 30 .01s, 684 .08MB read ( 30.01 秒内共处理完成了 1790465 个请求,读取了 684 .08MB数据) Requests/sec: 59658.29 (平均每秒处理完成 59658.29 个请求) Transfer/sec: 22 .79MB (平均每秒读取数据 22 .79MB) |
wrk -t1 -c4 -d100s -T3s --script=post.lua --latency http://localhost:8080/xtopic/news
1
|
<em id= "__mceDel" >post.lua脚本文件</em> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
paramArr = {} falg = 0 -- 初始化 function init(args) for line in io.lines( "requestParams.txt" ) do //requestParams.txt 请求参数文件 print(line) paramArr[falg] = line falg = falg+ 1 end end -- 请求 function request() local headers = { } headers[ 'Content-Type' ] = "application/json" body = paramArr[math.random( 0 ,table.getn(paramArr))] return wrk.format( "POST" ,nil,headers,body) end -- 响应 function response(status,headers,body) if (status ~= 200 ) then print( "response===error" ,status,body) else print( "response===success" ,status,body) end end |
三、wrk内置函数
wrk中执行http请求的时候,调用lua分为3个阶段,setup,running,done,每个wrk线程中都有独立的脚本环境
出 处:https://www.cnblogs.com/Onlywjy/p/14638312.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置