wrk(1) command

文章目录

  • 1.简介
  • 2.特点
  • 3.格式
  • 4.选项
  • 5.示例
  • 参考文献

1.简介

wrk 是由 Will Glozer 开发的,并首次发布于 2012 年。

wrk 是一个现代的 HTTP 压力测试工具,利用现代多线程技术和高效的网络 I/O 处理,能够生成大量的并发请求,用以测试 HTTP 服务器的性能。

它是作为一种更现代的压力测试工具而设计的,旨在替代旧的工具如 Apache HTTP server benchmarking tool (ab)。

wrk 能够在保持高并发的同时,提供准确和详细的性能测试结果,包括吞吐率、延迟和错误率等。

wrk 非常适合于高负载测试和性能分析。

2.特点

wrk 的设计重点是易用性、效率和灵活性。它通过简单的命令行界面提供强大的功能,同时支持 LuaJIT 脚本,让用户能够编写自定义的测试脚本来模拟复杂的请求场景。

wrk具备如下特性:

  • 轻量级性能测试工具,安装简单。

  • 学习成本低。

  • 基于异步事件驱动框架,单机支持高并发。

  • 单机压测工具,无分布式施压能力。

  • 只支持HTTP协议。

  • 无可视化界面,不支持流程编排、断言等能力,无法满足复杂压测需求。

3.格式

wrk 的基本命令格式如下:

wrk [OPTIONS] URL

其中 URL 是必须指定的,表示你想要测试的 HTTP 服务的网址。

4.选项

wrk 提供了多种选项来调整压力测试的各个方面:

-c, --connections N打开的连接总数。
-d, --duration T测试持续时间,例如 2s, 2m, 2h。
-t, --threads	N使用的线程数。
-s, --script FILE指定 Lua 脚本来自定义请求。
-H, --header H添加额外的 HTTP 头到请求中。
--latency打印出详细的延迟统计信息。
--timeout T设置套接字和 HTTP 读取超时时间。
-v, --version打印版本信息

数字参数可能包含 SI 单位(1k、1M、1G)。时间参数可能包含时间单位(2s、2m、2h)。

关于线程数,并不是设置的越大,压测效果越好,线程设置过大,反而会导致线程切换过于频繁,效果降低,一般来说,推荐设置成压测机器 CPU 核心数的 2 倍到 4 倍就行了。

5.示例

(1)GET 请求。

100 个请求分 10 个线程压 10 秒。

wrk -c100 -t10 -d10s --latency http://localhost:5000/test_get

控制台输出:

Running 10s test @ http://localhost:5000/test_get10 threads and 100 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency   201.71ms   58.06ms 451.62ms   79.16%Req/Sec    27.94     10.18    70.00     73.70%Latency Distribution50%  196.82ms75%  228.07ms90%  261.79ms99%  394.08ms2817 requests in 10.10s, 473.18KB read
Requests/sec:    278.94
Transfer/sec:     46.86KB

(2)POST 请求。

使用 test_post.lua 脚本。

wrk -c100 -t10 -d10s -s test_post.lua --latency http://localhost:5000/test_post

Lua 脚本:

wrk.method = "POST"
wrk.headers["Content-Type"] = "application/json"
wrk.body = '{"k1":1,"k2":2}'

控制台输出:

Running 10s test @ http://localhost:5000/test_post10 threads and 100 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency   188.49ms   60.76ms 352.02ms   67.50%Req/Sec    38.35     23.71   101.00     67.22%Latency Distribution50%  182.22ms75%  230.92ms90%  272.66ms99%  325.02ms3665 requests in 10.10s, 604.87KB read
Requests/sec:    362.77
Transfer/sec:     59.87KB

注:GET 请求同样可以使用 Lua 脚本。


参考文献

wg/wrk: Modern HTTP benchmarking tool
不同性能压测工具对比_性能测试(PTS) - 阿里云文档
性能测试工具wrk 使用教程- 犬小哈
wrk 性能测试工具详解 - 掘金

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue使用PDF.JS踩的坑--部署到服务器上显示pdf.mjs viewer.mjs找不到资源

之前项目使用的pdf.js 是2.15.349版本,最近换了一个4.6.82的版本,在本地上浏览文件运行的好好的,但是发布到服务器(IIS)上打不开文件,控制台提示找不到pdf.mjs viewer.mjs。 之前使用的2.15.349pdf和viewer…

mock虚拟接口技术

一、什么是mock mock指的就是使用mock创建出来的一个虚拟的接口 二、对于测试人员而言,我们为什么要使用mock 当我们进行接口测试时,如果对应的接口还没有开发好,但是我们又需要用到这个接口响应的信息,这个时候我们就可以使用…

邮件发送高级功能详解:HTML格式、附件添加与SSL/TLS加密连接

目录 一、邮件HTML格式设置 1.1 HTML邮件的优势 1.2 HTML邮件的编写 二、添加附件 2.1 附件的重要性 2.2 添加附件的代码示例 2.3 注意事项 三、使用SSL/TLS加密连接 3.1 SSL/TLS加密的重要性 3.2 SSL/TLS加密的工作原理 3.3 在邮件发送中启用SSL/TLS 3.3.1 邮件客…

智能算法躲避拥堵,高德企业用车上线“动态选路服务”为出行提效

近日,高德企业用车正式上线了一项全新服务——“动态选路服务”,旨在基于智能算法,动态规避突发拥堵路线,为企业用车用户提供更便捷、智能的出行方案。 以技术着眼细节,高德企业用车在帮助企业用车用户节约出行时间和…

飞睿智能实时雷达活体探测传感器模块,智能家居静止检测实时感知人员有无

随着科技的飞速发展,我们的生活正在经历着未有的创新。在这个创新的浪潮中,实时雷达活体探测传感器模块的技术正逐渐崭露头角,以其独特的优势为我们的生活带来安全与便捷。今天,我们就来详细探讨一下这项技术,看看它是…

TCL25届校招测评笔试TAS人才测评题库:高分攻略真题分析

🌟 职场新人必看:TCL校招测评全解析 🌟 亲爱的小伙伴们,你是否正准备踏入职场,或是对即将到来的校招感到既兴奋又紧张?今天,我将带你深入了解TCL校招中的TAS人才测评,让你在面试前做…

MyBatis - 动态SQL

前言 我们在某网站填写个人信息时,时常会遇到可以选填的空(即可填,可不填),由于之前讲过的Java中的SQL语句都是固定的,且我们不可能对所有情况都写出与之对应的插入语句(太过繁琐)&…

最新简洁大方的自动发卡网站源码/鲸发卡v11.61系统源码/修复版

源码简介: 最新简洁大方的自动发卡网站源码,它就是鲸发卡v11.61系统源码,它是修复版。 说到鲸发卡系统,鲸发卡系统在发卡圈很多人都知道的,它是市面最好发卡系统之一,操作起来简单得很,界面也…

03-Docker下载加速

03-Docker下载加速 docker下载加速 方式1:使用 网易数帆、阿里云等容器镜像仓库进行下载。 网易数帆官网:https://sf.163.com/ 例如,下载网易数帆镜像中的mysql。(网易数帆的地址为 hub.c.163.com,网易数帆对dockerh…

Protobuf:基本概念与使用流程

Protobuf:基本概念与使用流程 基本概念Linux 安装使用流程.proto文件编译使用 运行机制 基本概念 在进行网络编程时,经常需要进行数据传输,只有双方主机都保证数据格式的一致性,才能保证数据被正常解析。这个过程称为序列化与反序…

Android平台Unity3D下如何同时播放多路RTMP|RTSP流?

技术背景 好多开发者,提到希望在Unity的Android头显终端,播放2路以上RTMP或RTSP流,在设备性能一般的情况下,对Unity下的RTMP|RTSP播放器提出了更高的要求。实际上,我们在前几年发布Unity下直播播放模块的时候&#xf…

CTFHub技能树-SQL注入-Cookie注入

使用bp发现cookie的注入点 id1,发现为数字型 首先使用联合查询 id 1 order by 2 id 1 order by 3发现2的时候有回显,而3的时候无回显 Cookie: id-1 union select database(),user() 后面开始库->表->列->数据 Cookie: id-1 union select 1…

Gin中间件

Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。 定义中间件 Gin中的中…

上半年亏损扩大/百亿资产重组终止,路畅科技如何“脱困”?

在智能网联汽车市场形势一片大好的前提下,路畅科技上半年的营收却出现了下滑,并且亏损也进一步扩大。 2024年半年度报告显示,路畅科技营业收入1.35亿元,同比下滑7.83%;实现归属上市公司股东的净利润为亏损2491.99万元…

一篇讲完CSS的核心内容

目录 一 、引言 1.1CSS概念 二、 CSS简介 2.1 什么是CSS 2.2 CSS能干什么 2.3 CSS书写规范 2.4 基础语法 三、 CSS导入方式 3.1 内嵌方式(内联方式) 3.2 内部方式 3.3 外部方式 四、 CSS选择器 4.1 基本选择器 [重点] 4.2 属性选择器 五、 CSS属性 5.1 文字属性…

sheng的学习笔记-AI-强化学习(Reinforcement Learning, RL)

AI目录:sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是强化学习 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体&#…

【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码

目录 1. RabbitMQ 核心概念 1.1生产者和消费者 1.2 Connection和Channel 1.3 Virtual host 1.4 Queue 1.5 Exchange 1.6 RabbitMO工作流程 2. AMQP 3.RabbitMO快速入门 3.1.引入依赖 3.2.编写生产者代码 ​3.3.编写消费者代码 4.源码 1. RabbitMQ 核心概念 在安装…

Blender软件三大渲染器Eevee、Cycles、Workbench对比解析

Blender 是一款强大的开源3D制作平台,提供了从建模、雕刻、动画到渲染、后期制作的一整套工具,广泛应用于电影、游戏、建筑、艺术等领域。 渲染101云渲染云渲6666 相比于其他平台,如 Autodesk Maya、3ds Max 或 Cinema 4D,Blende…

好用的idea方法分隔符插件

好用的idea方法分隔符插件

频率增强通道注意力机制(FECAM)学习总结

本文提出了一种新的频率增强通道注意力机制(FECAM),旨在解决时间序列预测中傅里叶变换因吉布斯现象导致的高频噪声问题。FECAM基于离散余弦变换,能自适应地模拟信道间的频率依赖性,有效避免预测误差。实验显示&#xf…