首页>>后端>>Golang->性能测试小工具 wrk 可以怎么用

性能测试小工具 wrk 可以怎么用

时间:2023-11-30 本站 点击:0

根据官方的说明,wrk 是一个HTTP基准测试工具

当运行在单个多核CPU上时,它能够产生巨大的负载。它结合了多线程设计和可伸缩的事件通知系统,如 epoll 和 kqueue 等等

wrk 中的一个可选的 LuaJIT 脚本可以执行 HTTP 请求生成、响应处理和自定义报告

wrk 如何使用

那么 wrk 如何使用呢,我们就来实操一下看看效果 , 既然是 开源工具,下载安装编译的方式都很类似

1、下载 wrk 项目

gitclonehttps://github.com/wg/wrk.gitwrk

2、编译项目

cdwrkmake

3、将编译出来的 wrk 可执行程序放到用户自己的 bin 目录下

cpwrk/usr/local/sbin/

4、这个时候,我们就可以开始使用 wrk 工具了

咱们直接执行 wrk 来看看效果

#wrkUsage:wrk<options><url>Options:-c,--connections<N>Connectionstokeepopen//和服务器建立连接并保持的TCP连接数量-d,--duration<T>Durationoftest//具体的压测时间-t,--threads<N>Numberofthreadstouse//使用的线程数量-s,--script<S>LoadLuascriptfile//加载lua文件-H,--header<H>Addheadertorequest//添加请求头--latencyPrintlatencystatistics//打印延迟统计数据--timeout<T>Socket/requesttimeout//超时时间-v,--versionPrintversiondetails//版本信息NumericargumentsmayincludeaSIunit(1k,1M,1G)Timeargumentsmayincludeatimeunit(2s,2m,2h)

上面的 N 表示数字参数,可以是 1k, 1M, 1G

T 表示时间参数,可以是 2s, 2m, 2h

尝试使用 wrk 工具

我们使用 wrk 同样的参数来性能测试一下 掘金 和 百度的地址

200个链接

8个线程

测试 40 s

先测试掘金的

#wrk-c200-t8-d40--latencyhttps://juejin.cn/Running40stest@https://juejin.cn/8threadsand200connectionsThreadStatsAvgStdevMax+/-StdevLatency1.53s481.41ms2.00s87.68%Req/Sec10.277.5070.0073.61%LatencyDistribution50%1.67s75%1.85s90%1.95s99%2.00s2406requestsin40.05s,476.65MBreadSocketerrors:connect0,read0,write0,timeout1797Requests/sec:60.08Transfer/sec:11.90MB

再测试百度的

#wrk-c200-t8-d40--latencyhttps://www.baidu.comRunning40stest@https://www.baidu.com8threadsand200connectionsThreadStatsAvgStdevMax+/-StdevLatency284.06ms332.08ms2.00s86.02%Req/Sec96.4136.69538.0079.63%LatencyDistribution50%120.17ms75%357.11ms90%730.79ms99%1.56s31088requestsin40.07s,466.95MBreadSocketerrors:connect0,read138,write0,timeout264Requests/sec:775.87Transfer/sec:11.65MB

解释上面测试报告相关字段的含义:

Latency 延迟

Avg 平均值

Stdev 标准差

+/- Stdev 标准差占比

Requests/sec 平均每秒处理的请求数,通常说的 qps 这里可以看出 掘金是 60.08 , 百度是 775.87 ,差别还是有的

实践完毕之后,我们来捋一捋 wrk 的优势和劣势

优势:

wrk 是轻量级性能测试工具,用起来非常方便,且安装也很简单,学习成本低

根据官方介绍,我们知道 wrk 基于系统自带的高性能 I/O 机制,如 epoll, kqueue

这些机制是利用异步的事件驱动框架 多路 IO 复用来提高并发性能的

劣势:

仅支持单机压测,如果需要测试多台机器,wrk 就不合适了


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Golang/4596.html