当前位置: 首页 > news >正文

wrk 压力测试工具使用教程

文章目录

      • 一、wrk是什么?
      • 二、安装wrk
        • 1、在 Ubuntu 上安装 wrk
        • 2、在 CentOS 上安装 wrk
        • 3、在 macOS 上安装 wrk
        • 4、从源代码编译安装
      • 三、使用
      • 四、执行结果说明
      • 五、注意事项

一、wrk是什么?

wrk 是一个用于 HTTP 压力测试的现代化工具,它可以模拟大量并发连接,向目标服务器发送请求,并测量服务器的响应时间和吞吐量;使用c语言开发;

二、安装wrk

1、在 Ubuntu 上安装 wrk
sudo apt-get install wrk -y
2、在 CentOS 上安装 wrk
sudo yum install wrk -y
3、在 macOS 上安装 wrk
brew install wrk
4、从源代码编译安装

源码地址,有2个地址可供选择,对于一写无法翻墙的童鞋,可以使用gitee地址

# gitee地址
https://gitee.com/ponponon/wrk.
# github地址
git clone https://github.com/wg/wrk.git

开始安装

cd wrk
make
# 将编译生成的 wrk 可执行文件复制到系统路径下
sudo cp wrk /usr/local/bin

三、使用

以下是 wrk 工具的所有参数的详细解释以及示例:

参数描述
–t, --threads指定要使用的线程数,即并发连接数。示例:-t 4 表示使用 4 个线程进行压力测试。
–c, --connections指定要创建的并发连接数。示例:-c 100 表示使用 100 个并发连接进行压力测试。
–d, --duration指定测试运行的持续时间。示例:-d 60s 表示压力测试持续 60 秒。
–s, --script指定一个 Lua 脚本文件,用于自定义请求生成和处理逻辑。示例:-s script.lua 指定名为 script.lua 的 Lua 脚本文件。
–H, --header添加一个 HTTP 请求头。示例:-H “User-Agent: wrk” 表示设置 User-Agent 请求头为 “wrk”。
—latency在压力测试结束时打印延迟统计信息。
—timeout设置全局请求超时时间。示例:–timeout 5s 表示设置全局请求超时时间为 5 秒。
–T, --thread-timeout设置每个线程的超时时间。示例:-T 10s 表示设置每个线程的超时时间为 10 秒。
—version:显示 wrk 的版本信息。
—help显示 wrk 的帮助信息,包括所有可用的参数和选项。

举例,以下使用了2个线程、并发数为100,运行30秒,线程超时时间为30秒,全局超时时间为40秒,来测试 http://chn520.cn 这个链接,注意,测试域名一定要加上http协议:http://

wrk -t2 -c100 -d30s -T30s --timeout 40s  http://chn520.cn

四、执行结果说明

以下信息为执行结果

Running 10s test @ http://172.27.243.155:80902 threads and 100 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency    10.87ms   93.19ms   1.68s    98.58%Req/Sec    16.56k     8.54k   44.46k    74.63%331238 requests in 10.10s, 49.60MB readSocket errors: connect 0, read 0, write 0, timeout 8
Requests/sec:  32796.50
Transfer/sec:      4.91MB

这段 wrk 的执行结果显示了在使用 2 个线程和 100 个连接进行压力测试后的性能数据。让我们逐条解释这些数据的含义:

  1. “Running 10s test @ http://172.27.243.155:8090”:这表示在指定的 URL 上进行了 10 秒的压力测试。

  2. “2 threads and 100 connections”:这表示在测试中使用了 2 个线程和 100 个并发连接。

  3. “Thread Stats”:以下是关于线程性能的统计数据。

    • “Avg”:平均值
    • “Stdev”:标准偏差
    • “Max”:最大值
    • “+/- Stdev”:标准偏差占平均值的百分比
  4. “Latency”:延迟,这里显示的是请求的延迟数据。

    • “10.87ms”:平均延迟为 10.87 毫秒
    • “93.19ms”:标准偏差为 93.19 毫秒
    • “1.68s”:最大延迟为 1.68 秒
    • “98.58%”:标准偏差占平均值的百分比,这里表示 98.58% 的数据点落在平均值加减标准偏差的范围内。
  5. “Req/Sec”:每秒请求数。

    • “16.56k”:平均每秒处理的请求数为 16,560(每个线程每秒钟的执行的连接数)
    • “8.54k”:标准偏差为 8,540
    • “44.46k”:最大值为 44,460
    • “74.63%”:标准偏差占平均值的百分比,这里表示 74.63% 的数据点落在平均值加减标准偏差的范围内。
  6. “331238 requests in 10.10s, 49.60MB read”:在 10.10 秒内共发起了 331,238 个请求,总共读取了 49.60MB 的数据量。

  7. “Socket errors: connect 0, read 0, write 0, timeout 8”:显示了在测试期间发生的套接字错误,包括连接错误、读取错误、写入错误和超时错误的次数。

  8. “Requests/sec: 32796.50”:每秒完成的请求数(也就是QPS),这里显示为 32,796.50。(QPS = 总请求数/测试总耗时)

  9. “Transfer/sec: 4.91MB”:每秒传输的数据量,这里显示为 4.91MB。

综合来看,这份结果表明在当前的测试条件下,系统平均每秒能够处理约 32796.50 个请求,延迟较低,但存在部分请求的延迟较高。同时,总共传输了约 49.60MB 的数据量。每秒传输的数据量为 4.91MB

五、注意事项

因为wrk是针对http的请求进行压测,所以返回值一定得是http的响应头,比如:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 36
Content-Type: text/html
Date: Sun, 12 Nov 2023 13:24:09 GMT<html><body><h1>woaini</body></html>
http://www.dtcms.com/a/303575.html

相关文章:

  • 屏幕晃动机cad【4张】三维图+设计说明书
  • 多信号实采数据加噪版本
  • 详解 Electron 应用增量升级
  • 轻量级远程开发利器:Code Server与cpolar协同实现安全云端编码
  • 2. 编程语言-JAVA-Spring Security
  • 记录自己第n次面试(n>3)
  • JavaScript手录08-对象
  • 深入解析IPMI FRU规范:分区结构与字段标识详解
  • 10_opencv_分离颜色通道、多通道图像混合
  • Nuxt3 全栈作品【通用信息管理系统】修改密码
  • OpenLayers 综合案例-热力图
  • 在虚拟机ubuntu上修改framebuffer桌面不能显示图像
  • C++进阶—C++11
  • 5G 便携式多卡图传终端:移动作业的 “实时感知纽带”
  • 【unitrix】 6.19 Ord特质(ord.rs)
  • 【灰度实验】——图像预处理(OpenCV)
  • 2025年7月28日训练日志
  • 【三桥君】如何解决后端Agent和前端UI之间的交互问题?——解析AG-UI协议的神奇作用
  • 排水管网实时监测筑牢城市安全防线
  • 线程间-数据缓存机制(线程邮箱)
  • CDN架构全景图
  • STM32 usb HOST audio USB 音频设备 放音乐
  • springCloudAlibaba集成Dubbo
  • 【版本更新】火语言 0.9.94.0 更新
  • 虚拟面孔,真实革命
  • Product Hunt 每日热榜 | 2025-07-28
  • JAVA_EIGHTEEN_特殊文件
  • STM32——寄存器映射
  • LLaMA-Factory微调教程2:命令行sft微调
  • 【拓扑排序 缩点】P2272 [ZJOI2007] 最大半连通子图|省选-