news 2026/4/18 11:20:37

HTTP性能测试工具-wrk

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HTTP性能测试工具-wrk
1、前言

性能测试对软件测试的重要性在于它可以评估软件在特定负载条件下的性能表现,包括响应时间、吞吐量、并发用户数、资源利用率等。通过性能测试,可以识别并解决可能存在的性能问题,提高软件的可靠性、稳定性和可伸缩性。性能测试还可以帮助确定软件的容量需求,以便在生产环境中正确配置硬件和软件资源。因此,性能测试是软件测试中不可或缺的一部分,可以提高软件的质量和用户体验。

常见的性能测试工具有JMeter、LoadRunner等,本文将介绍另一款性能测试工具 - wrk,能够通过很少的线程压出很大的并发HTTP请求,进行服务器性能测试。

2、简介

wrk为C语言编写的轻量级HTTP性能测试工具,可以在单核CPU上运行时能够产生显著的负载,它将多线程设计与可扩展的事件通知系统(如epoll和kqueue)相结合。可选的LuaJIT脚本可以执行HTTP请求生成、响应处理和自定义报告。

github地址:

https://github.com/wg/wrk/

3、安装

一、Linux上安装

1、安装git

  1. cd /usr/local/src

  2. sudo yum install git -y

  3. 2、安装openssl

  4. sudo yum install openssl-devel

AI写代码

3、下载、编译(需安装gcc)

  1. git clone https://github.com/wg/wrk.git

  2. cd wrk

  3. make

AI写代码

二、Mac上安装

brew install wrk

AI写代码

4、快速上手

输入wrk,查看帮助信息。

  1. Usage: wrk <options><url>

  2. Options:

  3. -c, --connections <N> Connections to keep open

  4. -d, --duration <T> Duration of test

  5. -t, --threads <N> Number of threads to use

  6. -s, --script <S> Load Lua script file

  7. -H, --header <H> Add header to request

  8. --latency Print latency statistics

  9. --timeout <T> Socket/request timeout

  10. -v, --version Print version details

  11. Numeric arguments may include a SI unit (1k, 1M, 1G)

  12. Time arguments may include a time unit (2s, 2m, 2h)

1、Get示例:

使用12个线程(threads),保持400个HTTP连接(connections)开启,测试时间持续5秒(seconds)。

wrk -t12 -c400 -d5s https://www.httpbin.org/

AI写代码

测试结果:

平均响应时间364.15ms

2、Post示例:

wrk只能直接使用get、delete请求,post请求需要用到lua脚本。

创建post.lua文件,添加HTTP方法、主体和请求头。

  1. wrk.method = "POST"

  2. wrk.body = "username=admin&password=123456"

  3. wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"

AI写代码

使用4个线程(threads),保持200个HTTP连接(connections)开启,测试时间持续3秒(seconds),打印延迟统计信息。

wrk -t4 -c200 -d3s --script=post.lua --latency https://www.httpbin.org/post

AI写代码

测试结果:

Latency:响应时间

Req/Sec:单个线程处理请求数

Avg:平均值

Stdev:标准差,值越大说明机器或服务性能不稳定导致

Max:最大值

+/- Stdev:正负标准差比例,差值比标准差大或小的数据比率

Latency Distribution:延时分布多少ms以下请求数比例

Requests/sec:平均每秒处理请求数

Transfer/sec:平均每秒传输数据量

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:36:08

TensorLPP:张量局部保持投影算法详解与实现

在机器学习和计算机视觉领域,降维技术是处理高维数据的重要手段之一。传统的降维方法如PCA(主成分分析)关注全局方差最大化,而LPP(Locality Preserving Projections,局部保持投影)则更注重保留数据的局部邻域结构,这使得它在流形学习任务中表现出色。 然而,当数据本身…

作者头像 李华
网站建设 2026/4/19 0:00:40

MATLAB多列图例函数columnlegend详解与实现

引言 在MATLAB绘图中,当曲线或图例项数量较多时,默认的legend函数只会生成单列图例,导致图例框过长,甚至遮挡图形内容或超出图形区域。这时,我们希望能将图例排列成多列形式,既美观又节省空间。然而,MATLAB原生legend并不直接支持多列布局。 columnlegend 就是一个非常…

作者头像 李华
网站建设 2026/4/17 19:30:25

Keil uVision5嵌入式C开发:新手教程(从零配置环境)

从零开始搭建 Keil uVision5 嵌入式开发环境&#xff1a;新手也能看懂的实战指南 你是不是也曾经面对一块 STM32 开发板&#xff0c;手握资料却无从下手&#xff1f;打开 Keil 看着一堆弹窗和选项&#xff0c;心里直打鼓&#xff1a;“这玩意儿到底怎么用&#xff1f;”别急—…

作者头像 李华
网站建设 2026/4/17 1:07:54

javascript数据类型转换-转换为数字型

第一种转换方式&#xff0c;使用Number语法是Number(数据或者存储数据的变量)let a 12 console.log(Number(a),typeof Number(a))如果是不能转换的类型&#xff0c;返回值是NaN如果内容是空&#xff0c;返回值是0如果转换的是布尔值&#xff0c;true返回1&#xff0c;false返回…

作者头像 李华
网站建设 2026/4/17 17:20:27

ST7789V硬件时序详解:系统学习初始化流程

深入ST7789V&#xff1a;从硬件时序到初始化流程的系统性解析在嵌入式显示开发中&#xff0c;点亮一块屏幕看似简单——接上电源、写几条命令、刷点颜色。但当你真正动手时&#xff0c;却常常遇到花屏、黑屏、白屏、颜色错乱等问题。这些问题的背后&#xff0c;往往不是代码写错…

作者头像 李华
网站建设 2026/4/18 12:48:20

Linux驱动开发八股文:工作队列(Workqueue)

&#x1f4da; Linux 驱动开发笔记&#xff1a;工作队列 (Workqueue) 一、 核心定义 工作队列是 Linux 内核中断下半部&#xff08;Bottom Half&#xff09;的一种重要机制。它允许你将耗时的、需要等待资源或可能导致休眠的任务&#xff0c;从中断处理函数&#xff08;ISR&…

作者头像 李华