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

wrk(1) command

文章目录

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

1.简介

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

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

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

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

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 性能测试工具详解 - 掘金

相关文章:

wrk(1) command

文章目录 1.简介2.特点3.格式4.选项5.示例参考文献 1.简介 wrk 是一个现代的 HTTP 压力测试工具,利用现代多线程技术和高效的网络 I/O 处理,能够生成大量的并发请求,用以测试 HTTP 服务器的性能。 它是作为一种更现代的压力测试工具而设计的…...

【小程序 - 大智慧】Expareser 组件渲染框架

目录 问题思考课程目标Web Component类型说明定义组件属性添加 Shadow DOMTemplate and SlotExparser 框架原理自定义组件内置组件 下周计划 问题思考 首先,给大家抛出去几个问题: 前端框架 Vue React 都有自己的组件库,但是并不兼容&#…...

vue + echarts 快速入门

vue echarts 快速入门 本案例即有nodejs和vue的基础,又在vue的基础上整合了echarts Nodejs基础 1、Node简介 1.1、为什么学习Nodejs(了解) 轻量级、高性能、可伸缩web服务器前后端JavaScript同构开发简洁高效的前端工程化 1.2、Nodejs能做什么(了解) Node 打破了…...

服务器几核几G几M是什么意思?如何选择?

服务器几核几G几M是什么意思?我们建站、搭建网络平台都要用到云服务器,不管在腾讯云、阿里云还是别的云服务平台选购,都会接触到服务器配置。云服务器就是把物理服务器(俗称“母鸡”),用虚拟机技术虚拟出多…...

K8S服务发布

一 、服务发布方式对比 二者主要区别在于: 1、部署复杂性:传统的服务发布方式通常涉及手动配置 和管理服务器、网络设置、负载均衡等,过程相对复 杂且容易出错。相比之下,Kubernetes服务发布方式 通过使用容器编排和自动化部署工…...

Allen Institute for Artificial Intelligence (Ai2) 发布开源多模态语言模型 Molmo

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

Html CSS 布局,位置处理 居中 对齐

Html CSS 布局&#xff0c;位置处理 1、居中布局 1、div 让内部div居中对齐 html <div class"container"><div class"item">I am centered!</div> </div>style .container {border: 2px solid rgb(75, 70, 74);border-radius:…...

Spring MVC系统学习(二)——Spring MVC的核心类和注解

Spring MVC&#xff08;Model-View-Controller&#xff09;是Spring框架的一个模块&#xff0c;用于构建基于Web的应用程序。它使用模型、视图和控制器分离的设计模式&#xff0c;使得Web开发更加模块化和灵活。在学习Spring MVC时&#xff0c;有几个核心类和注解是非常关键的&…...

conda虚拟环境安装包、依赖同一管理

在 Python 的虚拟环境中&#xff0c;每个环境都是独立的&#xff0c;这意味着即使两个环境需要相同的库&#xff0c;它们也会分别安装各自的副本。这样做是为了避免不同项目之间相互影响&#xff0c;确保每个项目都有一个干净且隔离的环境。 方法一&#xff1a;使用 Conda 的共…...

Unity网络开发记录(四):在unity中进一步封装客户端类

在上一篇文章中&#xff0c;简单的封装了一下服务端中相关的socket对象&#xff0c;为了可以更方便的使用。所以在本篇中&#xff0c;进一步封装一下在unity中的相关客户端类 封装客户端类&#xff0c;首先采用单例模式&#xff0c;然后采用两个队列来存储我们相关的收发信息 p…...

Linux内核中的UART驱动-详解Linux内核UART驱动:结构与功能分析

一、UART概述 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;&#xff0c;即通用异步收发器&#xff0c;是一种串行通信接口&#xff0c;用于在计算机和外部设备之间传输数据。它特别适用于短距离、低速、串行和全双工的数据传输。在Linux内核中&a…...

威胁检测与防范:如何及时、准确对抗安全风险

随着技术的飞速发展&#xff0c;网络空间中的威胁日益多样化、隐蔽化&#xff0c;给个人、企业乃至国家的信息安全带来诸多挑战。面对严峻的网络威胁&#xff0c;传统的防火墙、入侵检测系统&#xff08;IDS&#xff09;等防御手段虽能在一定程度上抵御外部攻击&#xff0c;但依…...

数据结构串的kmp相关(求next和nextval)

傻瓜版&#xff0c;用来演示手算过程&#xff0c;个人理解用的&#xff0c;仅供参考。...

创建游戏暂停菜单

创建用户控件 设置样式 , 加一层 背景模糊 提升UI菜单界面质感 , 按钮用 灰色调 编写菜单逻辑 转到第三人称蓝图 推荐用 Set Input Mode Game And UI , 只用仅UI的话 增强输入响应不了 让游戏暂停的话也可以用 Set Game Paused , 打勾就是暂停 , 不打勾就是继续游戏 , 然后…...

seata服务端部署

1.下载seata 官网下载地址&#xff1a;http://seata.io/zh-cn/blog/download.html 或者下载 作者已经下载的压缩包1.4.0 注意&#xff01;&#xff01;&#xff01; 要参考对应的版本&#xff0c;否则可能出现无法正常启动的情况。 参考文档 下载完毕后解压压缩文件 2.修改配…...

理解Python闭包概念

闭包并不只是一个python中的概念&#xff0c;在函数式编程语言中应用较为广泛。理解python中的闭包一方面是能够正确的使用闭包&#xff0c;另一方面可以好好体会和思考闭包的设计思想。 1.概念介绍 首先看一下维基上对闭包的解释&#xff1a; 在计算机科学中&#xff0c;闭包…...

51单片机的教室智能照明系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块DS1302时钟模块光照传感器红外传感器温度传感器LED等模块构成。适用于教室灯光全自动控制、教室节能灯控制、教室智能照明等相似项目。 可实现功能: 1、LCD1602实时显示时间、温度、光照强度等信息 2、光照强度传…...

一款资产进行快速存活验证工具

01工具介绍 &#xff08;下载地址见最后&#xff09; 在日常工作的渗透测试过程中&#xff0c;经常会碰到渗透测试项目&#xff0c;而Web渗透测试通常是渗透项目的重点或者切入口。通常拿到正规项目授权后&#xff0c;会给你一个IP资产列表和对应的Web资产地址&#xff0c;这时…...

I/O中断处理过程

中断优先级包括响应优先级和处理优先级&#xff0c;响应优先级由硬件线路或查询程序的查询顺序决定&#xff0c;不可动态改变。处理优先级可利用中断屏蔽技术动态调整&#xff0c;以实现多重中断。下面来看他们如何运用在中断处理过程中&#xff1a; 中断控制器位于CPU和外设之…...

关于PHP 匿名函数在处理数据结构中的应用

PHP 的匿名函数&#xff08;也称为闭包&#xff09;在处理数据结构时非常有用。它们可以在需要一次性函数的情况下使用&#xff0c;例如数组函数的回调、事件处理或作为其他函数的参数。以下是一些常见的应用场景&#xff1a; 数组操作&#xff1a; 使用 array_map、array_fil…...

安卓13默认使用大鼠标 与配置分析 andriod13默认使用大鼠标 与配置分析

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 android13里面的鼠标貌似比以前版本的鼠标小了,有些客户想要把这个鼠标改大。这个功能,android有现成的,就在这里,设置 =》无障碍 =》色彩和动画 =》 大号鼠标指针。 我们通过…...

AI学习指南深度学习篇-批标准化在深度学习中的应用

AI学习指南深度学习篇-批标准化在深度学习中的应用 引言 批标准化&#xff08;Batch Normalization, BN&#xff09;是一种在深度学习中常用的技术&#xff0c;旨在加速训练过程并提高模型的稳定性。它通过标准化每一个小批量的激活值&#xff0c;减小内部协变量偏移&#xf…...

了解网络的相关信息

文章目录 前言了解网络的相关信息1. ip是什么?1.1. 公网IP:1.2. 私有IP:1.2.1. 示例 2. 子网掩码3. 子网掩码的划分网段是什么4. 特殊的回路IP网段(127.0.0.1)5. 端口 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#x…...

Java | Leetcode Java题解之第447题回旋镖的数量

题目&#xff1a; 题解&#xff1a; class Solution {public int numberOfBoomerangs(int[][] points) {int ans 0;for (int[] p : points) {Map<Integer, Integer> cnt new HashMap<Integer, Integer>();for (int[] q : points) {int dis (p[0] - q[0]) * (p[…...

Docker实践与应用举例

引言 Docker是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。本文将详细介绍 Dock…...

828华为云征文 | 智能监控新篇章,Prometheus如何在华为云Flexusx容器环境中大展身手

前言 在数字化转型的浪潮中&#xff0c;智能监控成为企业IT战略的关键环节。部署在华为云Flexus X实例上的Prometheus监控系统&#xff0c;凭借其卓越的性能与灵活性&#xff0c;正开启智能监控的新篇章。Flexus X实例以其强大的计算能力和灵活的资源管理&#xff0c;为Prometh…...

基于单片机的可调式中文电子日历系统

** 文章目录 前言概要功能设计软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…...

《C++设计新思维-泛型编程与设计模式之应用》阅读记录

目录 写在前面policy和policy class的认识 写在前面 这本书是2003年出版的&#xff0c;大佬侯捷翻译的&#xff0c;21年前的书了&#xff0c;最近打算翻一翻。 看这种技术书籍&#xff0c;特别是简历理论体系的书籍&#xff0c;最好看纸质书。 本书从根本上展示了generic pa…...

vue访问组件的数据和方法

组件源码 <template><view class"c_container" :style"myStyle" click"clickCust"><view style"font-size: 18px;text-align: center;">{{item.name}}</view><view style"margin-top: 10px;font-siz…...

Redis: RDB与AOF的选择和容灾备份以及Redis数据持久化的优化方案

如何选择RDB和AOF 1 &#xff09;同时开启 在我们 Redis 的服务器上&#xff0c;把RDB和AOF同时打开, 这样可以通过RDB快速的恢复数据&#xff0c;因为它是一个紧凑的缩缩的二进制文件, 但是有时 Redis 的不小心故障了&#xff0c;丢失了十几分钟的数据 可以通过AOF来做数据的…...

网站推广优化如何做/北京seo学校

拆书&#xff0c;读书&#xff0c;帮你选技术书。橡皮擦 “读” “选” 技术书。 打开任意一个购书网站都包含着大量的技术书籍&#xff0c;如何选到一本好技术书成了我们打工人的难题。 很早以前萌生过这样一个想法&#xff0c;如果有人帮我先读一下技术书籍&#xff0c;告诉…...

毕业设计做网站题目/seo搜索是什么

在node.js中有个专门处理与数据库连接操作的模块mongodb&#xff0c;由于这个模块只是对mongodb的操作做了一层浅封装&#xff0c;用起来不是很好用。如是出现了一个开源的第三方模块mongoose&#xff0c;mongoose是建立在mongodb基础之上的一个比mongodb更好用的模块。 Mongoo…...

网站点击弹出下载框 怎么做的/天津seo网站管理

概述在JAVA开发中使用 docker run命令配合上自建的Docker仓库可以很容易部署JAVA服务&#xff0c;但是使用Docker部署应用会有几个问题&#xff1a;一个docker run 不是部署服务的可靠方法&#xff0c;因为它创建的容器在单个机器运行。虽然Docker引擎提供了一些基本的管理功能…...

做网站和游戏是如何赚钱/百度排名服务

实现了一个简单的char二维数组函数&#xff0c;传入二维数组&#xff0c;打印二维数组的内容。 #include <cstdio>#define VEINKAPI __callback #define IN typedef int YNHANDLE;VEINKAPI void PrepareList(IN int fingercount, IN char **fingerlist, IN char** nameli…...

定制网站制作报价/百度seo快速排名优化服务

1. JNA简单介绍先说JNI(Java Native Interface)吧&#xff0c;有过不同语言间通信经历的一般都知道&#xff0c;它允许Java代码和其他语言(尤其C/C)写的代码进行交互&#xff0c;只要遵守调用约定即可。首先看下JNI调用C/C的过程&#xff0c;注意写程序时自下而上&#xff0c;调…...

大学生做家教比较好的网站/最全bt搜索引擎入口

一、定义 桥接模式&#xff08;Bridge Pattern&#xff09;&#xff0c;将抽象部分与它的实现部分分离&#xff0c;使的抽象和实现都可以独立地变化。 主要解决&#xff1a;在多维可能会变化的情况下&#xff0c;用继承会造成类爆炸问题&#xff0c;扩展起来不灵活。 何时使用&…...