网站首页 > 开源技术 正文
wrk简介
wrk 是一个能够在单个多核 CPU 上产生显著负载的现代 HTTP 基准测试工具。它采用了多线程设计,并使用了像 epoll 和 kqueue 这样的可扩展事件通知机制。此外,用户可以指定 LuaJIT 脚本来完成 HTTP 请求生成、响应处理和自定义报告等功能。
wrk 官网
https://github.com/wg/wrk
wrk安装
wrk支持linux安装,不支持windows安装。因此我们只能在linux环境下进行安装
安装步骤
1、下载wrk
git clone https://github.com/wg/wrk
2、切换到wrk目录,执行编译并安装
cd wrk
make
3、将可执行文件wrk复制到/usr/local/bin
cp wrk /usr/local/bin
wrk参数简介
输入命令
wrk --help
查看支持的相关参数
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use
-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
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
- -c 与服务器建立并保持的TCP连接数,其实就是并发数
- -d 压测的持续时间(单位为秒),默认为 10s
- -t 压测的线程数。正常设置为cpu核心线程数的2-4倍即可。如果线程数过多,会因线程上下文切换频繁,影响到压测效果
- -s 指定Lua脚本路径。可以通过Lua脚本实现复杂请求
- -H 指定请求的 HTTP Header
- --latency 压测结束后,打印响应时间统计消息
- --timeout 请求超时时间
- -v 版本信息
wrk使用示例
使用wrk的前置条件
在压测之前,先确保linux的最大文件句柄数是否足够,可以通过
ulimit -a
查看当前用户的文件句柄限制 ,如果不够则会报
"too many open files"
可以通过修改
/etc/security/limits.conf 文件内容,修改内容可以形如下
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
此时再通过 ulimit -a 查看一下,如果没生效,可以在/etc/security/limits.d/这个目录进行修改。查了一下资料在Centos7系统中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作用域缩小了。/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。
因此我们可以在/etc/security/limits.d/新建一个文件比如nofile.conf,填入
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
然后执行重启命令
示例
wrk -t32 -c5000 -d60s --timeout 30s --latency https://www.baidu.com/
这个命令的意思是用32个线程模拟5000个并发,对百度这个网站进行持续60s的压测,请求超时时间为30s
压测结果解读
Running 1m test @ https://www.baidu.com/
32 threads and 5000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 6.59s 5.02s 29.57s 79.01%
Req/Sec 5.14 4.82 36.00 83.11%
Latency Distribution
50% 4.91s
75% 8.24s
90% 13.38s
99% 25.42s
4677 requests in 1.00m, 51.98MB read
Socket errors: connect 40, read 0, write 0, timeout 27
Requests/sec: 77.82
Transfer/sec: 0.86MB
a、 Thread Stats 线程统计,包括响应时间以及请求时间
- Latency:响应时间,有平均值、标准偏差、最大值、正负一个标准差占比。
- Req/Sec:每个线程每秒完成的请求数, 同样有平均值、标准偏差、最大值、正负一个标准差占比。
b、 Latency Distribution 响应时间分布
- 50%:50% 的响应时间为4.91s。
- 75%:75% 的响应时间为8.24s 。
- 90%:90% 的响应时间为13.38s
- 99%:99% 的响应时间为25.42s。
c、 4677 requests in 1.00m, 51.98MB read
1m 完成的总请求数(4677)和数据读取量(51.98MB)
d、 Socket errors: connect 40, read 0, write 0, timeout 27
错误统计,会统计 connect 连接失败请求个数(40个)、读失败请求个数、写失败请求个数、超时请求个数(27个)。
e、 Requests/sec: 77.82
每秒请求数为77.82(QPS)
f、 Transfer/sec: 0.86MB
平均每秒读取0.86MB数据(TPS)
总结
本文是wrk的一个入门介绍,wrk本身具有轻量、安装简单、学习成本很低,几分钟就可以上手。利用异步的事件驱动框架,通过很少的线程就可以压出很大的并发量等优点,但wrk目前仅支持单机压测 ,不支持多机分布式压力测试,因此wrk适合性能基准测试。其实除了wrk之外,还有ab、jmeter、locust、LoadRunner、go-stress-testing等压测工具可供选择
猜你喜欢
- 2024-10-12 全职宝妈的我啊这肚子,阳康一过大了几圈
- 2024-10-12 佟丽娅称选手像易烊千玺,男方粉丝不干,饭圈太敏感会四面树敌吗
- 2024-10-12 马苏素颜开直播健身,穿健美裤大秀“木瓜臀”,女生都吃不下饭了
- 2024-10-12 熊黛林穿开叉礼服出席活动秀丰满上围大长腿,小肚腩却抢镜了
- 2024-10-12 周扬青林允合影曝光,“网红脸”一览无遗,网友:凡事就怕对比
- 2024-10-12 NalfWrkxfV(wfdwyxqxjf-rh)
- 2024-10-12 阿森纳VS切尔西,欧联杯冠军之争,你看好谁?是埃梅里还是萨里?
- 2024-10-12 大学生志愿者三下乡支教活动顺利开展
- 2024-10-12 他是圈内隐形低调富豪,明明家里有亿万家产,还跑龙套
- 2024-10-12 他曾建议开除岳云鹏,成名后岳云鹏最感激他,网友:男人的气度
你 发表评论:
欢迎- 03-19基于layui+springcloud的企业级微服务框架
- 03-19开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- 03-19SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- 03-19SpringBoot+LayUI后台管理系统开发脚手架
- 03-19layui下拉菜单form.render局部刷新方法亲测有效
- 03-19Layui 遇到的坑(记录贴)(layui chm)
- 03-19基于ASP.NET MVC + Layui的通用后台开发框架
- 03-19LayUi自定义模块的定义与使用(layui自定义表格)
- 最近发表
-
- 基于layui+springcloud的企业级微服务框架
- 开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- SpringBoot+LayUI后台管理系统开发脚手架
- layui下拉菜单form.render局部刷新方法亲测有效
- Layui 遇到的坑(记录贴)(layui chm)
- 基于ASP.NET MVC + Layui的通用后台开发框架
- LayUi自定义模块的定义与使用(layui自定义表格)
- Layui 2.9.11正式发布(layui2.6)
- Layui 2.9.13正式发布(layui2.6)
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)