性能测试工具——wrk的安装与使用

前言

想和大家来聊聊性能测试,聊到了性能测试必须要说的是性能测试中的工具,在这些工具中我今天主要给大家介绍wrk。

​介绍

wrk是一款开源的性能测试工具 ,简单易用,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以支持lua脚本来创建复杂的测试场景。

wrk 的一个很好的特性就是能用很少的线程压出很大的并发量, 原因是它使用了一些操作系统特定的高性能 I/O 机制, 比如 select, epoll, kqueue 等。 其实它是复用了 redis 的 ae 异步事件驱动框架. 确切的说 ae 事件驱动框架并不是 redis 发明的, 它来自于 Tcl的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用,而更多的被大家所熟知。 

安装

wrk只能运行于 Unix 类的系统上,也只能在这些系统上便宜,所以我们需要一个Linux或者macOs。

不得不说,使用了 Win10之后方便很多。

必备条件:

  • Win10 RS及以上版本
  • 启用Ubuntu子系统

1、Win10 系统通过bash命令,切换到Ubuntu子系统。 然后需要安装一下编译工具,通过运行下面命令来安装工具:

 
  1. # 安装 make 工具

  2. sudo apt-get install make

  3. # 安装 gcc编译环境

  4. sudo apt-get install build-essential

安装 gcc 编译环境的时候最好挂一下VPN,速度会快些。

2、安装完成之后使用 git 下载 wrk 的源码到本地。

3、切换到git的wrk目录,然后使用make命令:

cd /mnt/盘符/wrk目录

make

编译完成之后,目录下面会多一个 wrk 的文件。

测试

使用以下命令来测试一下:

./wrk -c 1 -t 1 -d 1 http://www.baidu.com

​简单说一下wrk里面各个参数什么意思?

  • -t 需要模拟的线程数

  • -c 需要模拟的连接数

  • --timeout 超时的时间

  • -d 测试的持续时间

结果:

  • Latency:响应时间

  • Req/Sec:每个线程每秒钟的完成的请求数

  • Avg:平均

  • Max:最大

  • Stdev:标准差

  • +/- Stdev: 正负一个标准差占比

标准差如果太大说明样本本身离散程度比较高. 有可能系统性能波动很大. 如果想看响应时间的分布情况可以加上--latency参数

我们的模拟测试的时候需要注意,一般线程数不宜过多,核数的2到4倍足够了。 多了反而会因为线程切换过多造成效率降低, 因为 wrk 不是使用每个连接一个线程的模型, 而是通过异步网络 I/O 提升并发量。 所以网络通信不会阻塞线程执行,这也是 wrk 可以用很少的线程模拟大量网路连接的原因。

在 wrk 的测试结果中,有一项为Requests/sec,我们一般称之为QPS(每秒请求数),这是一项压力测试的性能指标,通过这个参数我们可以看出应用程序的吞吐量。

 

总结:

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

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

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

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

相关文章

多种智能搜索算法可视化还原 3D 魔方

一、写在前面 许久没有写图形化界面的程序了,最近学习了一些经典的盲目搜索算法与智能搜索算法,正好拿来还原三阶魔方!试试手! 提前声明 我不是专业搞人工智能的,理论或者实现过程有些许错误也很正常,评论…

YOLOv5_seg-Openvino和ONNXRuntime推理【CPU】

纯检测系列: YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列: YOLOv5/6/7-O…

解决游戏程序一运行就退出的问题

正文: 在游戏开发过程中,我们可能会遇到程序一运行就立即退出的情况。这种情况通常是由于程序中的某些逻辑错误或初始化问题导致的。 下面我们将分析可能的原因,并提供一些解决方案。 目录 正文: 原因分析: 解决方案…

Linux磁盘配额

磁盘配额 概述 Linux系统作为一个多用户的操作系统,在生产环境中,会发生多个用户共同使用一个磁盘的情况,会造成Linux根分区的磁盘空间耗尽,导致Linux系统无法建立新的文件,从而出现服务程序崩溃、系统无法启动等故障…

【ArcGISPro】道路数据下载并使用

下载 下载链接: Geofabrik 下载服务器 这些数据通常 每天更新。 下载结果 arcmap用户下载工具 10.2:http://www.arcgis.com/home/item.html?id=16970017f81349548d0a9eead0ebba39 10.3:

力扣题目训练(20)

2024年2月13日力扣题目训练 2024年2月13日力扣题目训练594. 最长和谐子序列598. 区间加法 II599. 两个列表的最小索引总和284. 窥视迭代器287. 寻找重复数135. 分发糖果 2024年2月13日力扣题目训练 2024年2月13日第二十天编程训练,今天主要是进行一些题训练&#x…

UE5数字孪生系列笔记(二)

智慧城市数字孪生系统 制作流云动画效果 首先添加一个图像在需要添加流云效果的位置 添加动画效果让其旋转 这个动画效果是程序开始就要进行的,所以要在EventConstruct中就可以启动这个动画效果 添加一个一样的图像在这里,效果是从此处进行放大消散 添…

C语言---指针的两个运算符:点和箭头

目录 点(.)运算符箭头(->)运算符需要注意实际例子 C语言中的指针是一种特殊的变量,它存储了一个内存地址。点(.)和箭头(->)是用于访问结构体和联合体成员的运算符。…

运行gazebo机器人模型没有cmd_vel话题

运行赵虚左教程代码出现上诉问题 roslaunch urdf02_gazebo demo03_env.launch 原因:缺少某个包 在工作空间catkin_make编译发现报错 解决: sudo apt-get install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control 下载后再次运行launch文件…

60种常用可视化图表的使用场景——(下)

文章目录 31、径向柱图 32、热图 33、散点图 34、气泡图 35、气泡地形图 36、地区分布图 37、点示地图 38、连接地图 39、流向地图 40、甘特图 41、箱形图 42、子弹图 43、蜡烛图 44、跨度图 45、卡吉图 46、美国线 47、弦图 48、非彩带弦图 49、树形图 50、流程图 51、脑力激荡…

Volume优化

低效volume影响 解算时间;存储大小;渲染时间;服务器I/O;迭代次数;影响队友; 降低volume数据 体素精度分辨率;根据离相机的远近设置不同的分辨率;数据位数;删除不需要的数…

python知识点总结(一)

这里写目录标题 一、什么是WSGI,uwsgi,uWSGI1、WSGI2、uWSGI3、uwsgi 二、python中为什么没有函数重载?三、Python中如何跨模块共享全局变量?四、内存泄露是什么?如何避免?五、谈谈lambda函数作用?六、写一个函数实现字符串反转,尽可能写出你知道的所…

python接口自动化之DDT数据驱动测试

一、简单介绍 DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中&…

C#混淆心得

C#混淆心得 近期遇到混淆C#代码的需求,在网上找了很多办法,在此记录一下。 混淆的本质就是让代码变丑,让别人看不懂。 为什么要混淆: 1.保护核心代码 可以在一定程度上避免别人偷代码,从而保护重要的部分&#xf…

postman---postman参数化

我们在做接口测试的过程中,都会遇到同一个接口不同的数据,每次去一个个填写数据就太麻烦了,今天我们一起学习下如何通过postman进行参数化 一、参数化 参数化就是1个接口请求不同的数据,我们可以通过把请求的数据放入到一个文件…

滑动窗口和螺旋矩阵

209. 长度最小的子数组 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回…

LInux 进程替换(理解系统调用)

目录 一、替换原理 二、替换函数 1、exec函数 2、命名理解 3、返回值 4、使用execl/lp、execv/vp 5、执行自定义命令 Makefile编译多个文件 命令行程序mycmd.c 传入自己的可执行文件 7、子进程都继承父进程环境变量 8、execle/ve修改子进程环境变量 9、exece函数为…

编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,我们之前讲过很少用到的因果图法,下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口,每个…

2024批量导出公众号所有文章生成目录,这下方便找文章了

公众号历史文章太多,手机上翻起来太费劲,怎么快速找到某一天的文章呢?比如深圳卫健委这个号从2014到2024发布近万篇文章。 公众号历史文章太多,手机上翻起来太费劲,怎么快速找到某一天的文章? 如果要找2020…

如何重置iPhone的网络设置?这里提供详细步骤

前言 本文介绍如何重置iPhone上的网络设置。该信息适用于iPhone 12到iPhone 6以及iOS 14到iOS 8。 如何在iPhone上重置网络设置 采取以下步骤重置iPhone上的网络设置: 1、在iPhone上,打开设置应用程序。 2、单击通用。 3、滚动到屏幕底部&#xff…