轻量级性能测试工具 wrk 如何使用?

项目设计之初或者是项目快要结束的时候,大佬就会问我们,这个服务性能测试的结果是什么,QPS 可以达到多少,RPS 又能达到多少?接口性能可以满足未来生产环境的实际情况吗?有没有自己测试过自己接口的吞吐量,等等。

作为开发、测试人员,这些问题不仅仅是用来面试,还是实实在在的落地在实际工作中。很多项目上线初期用户量较小,表面上看是风平浪静,实则暗流涌动,慢慢的用户量上来之后,系统的瓶颈慢慢凸显。曾经挖的坑,最后还是要我们自己来填,若不能及时填上,可能整个产品就这么断送了。

今天一起来看看轻量级的性能测试工具 wrk 如何使用:

性能测试相关名词

QPS每秒查询率 (Query Per Second):每秒查询率 QPS 是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
并发用户数:指系统可以同时承载的正常使用系统功能的用户的数量。
吞吐量 (Throughput):吞吐量是指系统在单位时间内处理请求的数量。
响应时间 (RT):指系统对请求作出响应的时间。

wrk 是什么?

wrk 是 github 的一个项目,地址:https://github.com/wg/wrk

根据官方的说明,wrk 是一个HTTP基准测试工具,当运行在单个多核CPU上时,它能够产生巨大的负载。它结合了多线程设计和可伸缩的事件通知系统,如 epoll 和 kqueue 等等。

wrk 中的一个可选的 LuaJIT 脚本可以执行 HTTP 请求生成、响应处理和自定义报告。

wrk 如何使用?

那么 wrk 如何使用呢,我们就来实操一下看看效果 , 既然是开源工具,下载安装编译的方式都很类似:

1、下载 wrk 项目

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

 2、编译项目

  1. cd wrk

  2. make

3、将编译出来的 wrk 可执行程序放到用户自己的 bin 目录下

cp wrk /usr/local/sbin/

 4、这个时候,我们就可以开始使用 wrk 工具了

咱们直接执行 wrk 来看看效果:

# wrk
Usage: wrk  Options:-c, --connections   Connections to keep open // 和服务器建立连接并保持的 TCP 连接数量  -d, --duration      Duration of test  // 具体的压测时间-t, --threads       Number of threads to use // 使用的线程数量-s, --script        Load Lua script file // 加载 lua 文件-H, --header        Add header to request // 添加请求头--latency          Print latency statistics // 打印延迟统计数据--timeout       Socket/request timeout // 超时时间-v, --version          Print version details // 版本信息Numeric arguments may include a SI unit (1k, 1M, 1G)Time arguments may include a time unit (2s, 2m, 2h)

上面的: N 表示数字参数,可以是 1k, 1M, 1G ;T 表示时间参数,可以是 2s, 2m, 2h

尝试使用 wrk 工具

我们使用 wrk 同样的参数来性能测试一下 掘金 和 百度的地址

200个链接,8个线程,测试 40 s

先测试掘金的:

# wrk -c200 -t8 -d40 --latency https://juejin.cn/
Running 40s test @ https://juejin.cn/8 threads and 200 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency     1.53s   481.41ms   2.00s    87.68%Req/Sec    10.27      7.50    70.00     73.61%Latency Distribution50%    1.67s75%    1.85s90%    1.95s99%    2.00s2406 requests in 40.05s, 476.65MB readSocket errors: connect 0, read 0, write 0, timeout 1797
Requests/sec:     60.08
Transfer/sec:     11.90MB

 再测试百度的:

# wrk -c200 -t8 -d40 --latency https://www.baidu.com
Running 40s test @ https://www.baidu.com8 threads and 200 connectionsThread Stats   Avg      Stdev     Max   +/- StdevLatency   284.06ms  332.08ms   2.00s    86.02%Req/Sec    96.41     36.69   538.00     79.63%Latency Distribution50%  120.17ms75%  357.11ms90%  730.79ms99%    1.56s31088 requests in 40.07s, 466.95MB readSocket errors: connect 0, read 138, write 0, timeout 264
Requests/sec:    775.87
Transfer/sec:     11.65MB

解释上面测试报告相关字段的含义:

Latency 延迟
Avg 平均值
Stdev 标准差
+/- Stdev 标准差占比
Requests/sec 平均每秒处理的请求数,通常说的 qps 这里可以看出 掘金是  60.08 , 百度是  775.87 ,差别还是有的。
实践完毕之后,我们来捋一捋 wrk 的优势和劣势

优势:

wrk 是轻量级性能测试工具,用起来非常方便,且安装也很简单,学习成本低;
根据官方介绍,我们知道 wrk 基于系统自带的高性能 I/O 机制,如 epoll, kqueue这些机制是利用异步的事件驱动框架 多路 IO 复用来提高并发性能的。
劣势:

仅支持单机压测,如果需要测试多台机器,wrk 就不合适了。

总结:

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

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

软件测试面试文档

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

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

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

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

相关文章

阿里云服务器云盘ESSD Entry、SSD、高效云盘性能测评

阿里云服务器系统盘或数据盘支持多种云盘类型,如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等,阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…

三菱plc的点动控制循环(小灯闪烁,单控气缸循环)

以为前一段时间小编做了一个气缸定时循环的程序,根据程序有不足之处,所以小编写下这篇文章,将网络上的plc小灯控制进行总结!如果对你有帮助,不要忘了点赞收藏!如果有更加好的梯形图,欢迎评论&am…

Redis(一)

1、redis Redis是一个完全开源免费的高性能(NOSQL)的key-value数据库。它遵守BSD协议,使用ANSI C语言编写,并支持网络和持久化。Redis拥有极高的性能,每秒可以进行11万次的读取操作和8.1万次的写入操作。它支持丰富的数…

WEB:探索开源OFD.js技术应用

1、简述 OFD.js 是一个由开源社区维护的 JavaScript 库,专注于在浏览器中渲染和处理 OFD 文件。OFD 作为一种开放式的文档格式,被广泛应用于电子政务、电子合同等领域。OFD.js 的出现为开发者提供了一个强大的工具,使得在前端实现 OFD 文件的…

阿里云系统盘测评ESSD、SSD和高效云盘IOPS、吞吐量性能参数表

阿里云服务器系统盘或数据盘支持多种云盘类型,如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等,阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…

用Audio2Face驱动UE - MetaHuman

新的一年咯,很久没发博客了,就发两篇最近的研究吧。 开始之前说句话,别轻易保存任何内容,尤其是程序员不要轻易Ctrl S 在UE中配置Audio2Face 先检查自身电脑配置看是否满足,按最小配置再带个UE可能会随时崩&#x…

【C++】HP-Socket(一): 下载、Linux上编译、Windows远程编译Linux版本

1、简介 国产、高性能、跨平台网络通信框架。 作者于2024-01-01更新了Release版本v5.9.4,辛苦了,向作者致敬! 源码下载: https://gitee.com/mirrors/hp-socket https://github.com/ldcsaa/HP-Socket 2、编译 2.1 在Linux上编…

requests库中Session对象超时解决过程

引言 在使用Python进行网络请求时,requests库是一个非常常用的工具。它提供了Session对象来管理和持久化参数,例如cookies、headers等。但是,对于一些需要长时间运行的请求,我们需要设置超时时间来避免长时间等待或者无限期阻塞的…

实战环境搭建-进行虚拟机网络配置

下来进行虚拟机的网络设置,我们用NAT设置 首先关闭正在运行的虚拟机, 之后点击“编辑” 选择“虚拟网络编辑器” 点击“更改设置”,选择NAT模式,如下图: 将子网IP设置成你想要的IP地址,我设置的是192.168.0.0,点击“确定” 再次启动虚拟机。 因为给你们的是图形版的,…

day04 两两交换链表中的节点 删除链表的倒数第N个节点 链表相交 环形链表Ⅱ

题目1:24 两两交换链表中的节点 题目链接:24 两两交换链表中的节点 题意 两两交换链表中相邻的节点,返回交换后链表的头节点 虚拟头节点 注意终止条件,考虑节点的奇偶数,根据奇偶数确定终止条件 注意定义中间变量…

Sectigo企业的通配符证书续费

首先,我们要知道SSL证书是有期限的,通常SSL证书的有效期为一年,在SSL证书到期之前我们需要对其进行续费,从而延续SSL证书对网站的保护。Sectigo是中多的CA认证机构之一,申请速度快、性价比高,很多子域名站点…

密码学:带密钥的消息摘要算法一数字签名算法

文章目录 前言手写签名和数字签名前置知识点:消息摘要算法数字签名算法数字签名算法的由来数字签名算法在实际运用的过程附加:签名和摘要值的解释 数字签名算法的家谱数字签名算法的消息传递模型经典数字签名算法-RSA实现 数字签名标准算法-DSA实现 圆曲…