当前位置: 首页 > 工具软件 > wrk > 使用案例 >

HTTP压测工具Wrk 介绍和使用

费明诚
2023-12-01

介绍

wrk是一款简单的HTTP压测工具,托管在Github上,https://github.com/wg/wrk.
wrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等. 其实它是复用了 redis 的 ae 异步事件驱动框架. 确切的说 ae 事件驱动框架并不是 redis 发明的, 它来至于 Tcl的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而更多的被大家所熟知.

安装

git clone https://github.com/wg/wrk.git  
cd wrk  
make  

使用 

wrk -t12 -c100 -d30s http://www.baidu.com  

 返回:

Running 30s test @ http://www.baidu.com
  12 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   300.59ms  210.80ms   1.99s    87.17%
    Req/Sec    28.25     15.33   121.00     68.12%
  10036 requests in 30.10s, 149.22MB read
  Socket errors: connect 0, read 29, write 0, timeout 24
Requests/sec:    333.47
Transfer/sec:      4.96MB

参数解释:

参数解释:

12 threads and 100 connections:
总共是12个线程,100个连接(不是一个线程对应一个连接)

latencyReq/Sec:
代表单个线程的统计数据,latency代表延迟时间,Req/Sec代表单个线程每秒完成的请求数,他们都具有平均值, 标准偏差, 最大值, 正负一个标准差占比。一般我们来说我们主要关注平均值和最大值. 标准差如果太大说明样本本身离散程度比较高. 有可能系统性能波动很大.

10036 requests in 30.10s, 149.22MB read
在30秒之内总共有10036个请求,总共读取149.22MB的数据

Socket errors: connect 0, read 29, write 0, timeout 24
总共有29个读错误,24个超时.

Requests/sec和Transfer/sec
所有线程平均每秒钟完成了333.47个请求,每秒钟读取4.96MB数据量

 

如果想看看响应时间的分布,可以增加--latency:

wrk -t12 -c100 -d30s --latency http://www.baidu.com 
Running 30s test @ http://www.baidu.com
  12 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   401.52ms  270.05ms   1.98s    91.39%
    Req/Sec    21.04     10.87    60.00     56.44%
  Latency Distribution
     50%  307.72ms
     75%  317.86ms
     90%  616.33ms
     99%    1.66s
  7487 requests in 30.10s, 111.42MB read
  Socket errors: connect 0, read 4, write 0, timeout 55
Requests/sec:    248.70
Transfer/sec:      3.70MB

 

 类似资料: