性能测试工具对比:wrk、jmeter与locust的优劣分析
创作时间:
作者:
@小白创作中心
性能测试工具对比:wrk、jmeter与locust的优劣分析
引用
CSDN
1.
https://m.blog.csdn.net/qaqqqqqaq_/article/details/145168119
在进行性能测试时,选择合适的测试工具至关重要。本文将从使用经验出发,对wrk、jmeter和locust这三个常用的性能测试工具进行详细介绍和对比,帮助读者根据具体需求选择最适合的工具。
基本对比
由于loadrunner为商业收费模式,对于公司级测试使用而言涉及到授权问题,因此,本文暂不对loadrunner进行详细讨论。
wrk
wrk是轻量化的http性能测试工具,采用线程+网络异步IO模型,网络异步IO可以使得系统使用很少的线程模拟大量的网络连接以增大并发量、提高压力。
优点
- 操作简单、易于使用
使用方式
./wrk -c 1000 -t 8 -d 10s http://www.baidu.com
主要包括以下参数:
-t(--thread)
:需要模拟的线程数-c(connection)
:需要模拟的连接数--timeout
:超时的时间-d(--duration)
:测试的持续时间
缺点
- wrk只支持http协议类型请求(如get、post等),但若是需要执行get之外的http类型请求需要使用者自行编写lua脚本;
- 只允许单机测试,不支持多机分布式压力测试,因此wrk适合性能基准测试,对于模拟上万的用户并发测试显得有点力不从心;
- 测试结果简单,无详细图表解析
jmeter
jmeter同样采用线程并发机制,但其主要依靠增加线程数提高并发量,当单机模拟数以千计的并发用户时,对于CPU和内存的消耗比较大。与上述wrk相比,jmeter本身具有以下优点和缺点——
优点
- 界面可视化操作,可以使用录制脚本方式对较为复杂的用户流建模,还可以创建断言来验证测试行为是否通过;
- 表格、图形、结果树等多类可视化数据分析和报告输出
- 支持http、ftp、tcp等多种协议类型测试;
- 支持分布式压力测试,但对于上万的用户并发测试需要多台测试机支持,资源要求比较大;
- 可以用于测试固定吞吐量下的系统性能,例如在100QPS(QPS:每秒查询率)下系统的响应时间和资源消耗;
缺点
- jmeter的GUI模式消耗资源较大,当需要测试高负载时,需要先使用GUI工具来生成XML测试计划,然后在非GUI模式下导入测试计划运行测试,并且关闭不需要的侦听器(收集数据与展示测量的组件),因为侦听器也会消耗掉本用于生成负载的大量资源。测试结束后后,需要将原始结果数据导入GUI以才能查看结果。
locust
locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试。locust使用python语言开发,测试资源消耗远远小于java语言开发的jmeter。且其支持分布式部署测试,能够轻松模拟百万级用户并发测试。与jmeter和wrk相比,locust具有以下优缺点:
优点
- 不同与wrk和jmeter使用线程数提高并发量,locust借助于协程实现对用户的模拟,相同物理资源(机器cpu、内存等)配置下locust能支持的并发用户数相比jmeter可以提升一个数量级;
- 相比wrk对复杂场景测试的捉襟见肘和jmeter需要界面点击录制复杂场景的麻烦,locust只需用户使用python编写用户场景完成测试;
- 不同与jmeter复杂的用户使用界面,locust的界面干净整洁,可以实时显示测试的相关细节(如发送请求数、失败数和当前发送请求速度等);
- locust虽然是面向web应用测试的,但是它可以用来测试几乎所有系统。给locust编写一个客户端,可以满足你所有的测试要求;
缺点
- 同wrk一样,locust测试结果输出不如jmeter的测试结果展示类型多;
总结
本文简单介绍和对比了wrk、jmeter及locust三种性能测试工具,希望能给大家带来基础的认识。此外让我们最后一起来看看面临以下测试需求,我们应该如何在三者中进行选择:
- 我想使用界面操作的形式对我的系统做性能测试,并且希望我的测试数据有个良好的可视化展示方式;
- 建议使用jmeter工具
- 我想要对我系统的http rest接口进行性能测试,但是我之前没有进行过任何测试,我不知道我的系统QPS是个什么样的水平;
- 建议使用wrk工具
- 我想对我的系统模拟用户操作进行复杂场景的性能测试;
- 建议使用locust工具
- 我想测试我的系统在一定QPS情况下,一段时间内的性能指标(cpu消耗、内存消耗等);
- 建议使用jmeter工具
- 我想使用匀速请求的方式,对我的系统进行性能测试;
- 建议使用jmeter或locust工具
- 我想体验编程的乐趣,自己编写脚本进行性能测试;
- http请求:wrk,使用lua语言编写脚本;
- locust,使用python语言编写脚本;
- 或者,just do it by yourself,自己选择编程语言编写性能测试脚本。
附录
wrk 使用参数说明:
- 参数-c(connection,线链接数)与操作系统文件句柄数相关,-c不能超过文件句柄数设置,开始测试前应保证系统可用端口数大于-c设置;
- 参数-t(–thread,线程数)与操作系统cpu核数有关,-t不宜设置过大,过大的线程数设置反而会因线程调度反而使性能降低。如下图所示,操作系统为8核cpu:相同连接数和测试时长条件下,不同线程数对同一系统REST接口测试,从测试结果可以看出当thread=8(与cpu核数一致)时系统性能测试结果最佳,性能波动最小;
8核cpu:相同连接数和测试时长条件下,不同线程数对同一系统REST接口测试结果对比图
热门推荐
基金会如何赚钱?收入来源、投资策略与资金管理全解析
LED显示屏刷新率与分辨率的区别
【美国H1B签证最新政策】一文读懂申请条件+抽签流程+费用
痛风的生活处方:与尿酸和解的八大健康法则
从生活里汲取表达力,让沟通不再 “词不达意”
茶叶精加工流程详解:从初制到成品的全过程
爱吃土豆的要留意,看后告诉身边人,我也是今天才知道
历史的镜像:治世、盛世与中兴之辨
物流运输中的供应链可视化与追溯
购房者维权之路:如何应对开发商资金链断裂
中国古建筑殿堂造与厅堂造
漫画《强殖装甲》为什么大反派兽神将阿卡菲尔的魅力这么高?
鬼灭之刃:这部作品是如何诞生的?
从产生、转化、应用方面发力,深耕科技成果转化的“试验田”
你的名字,真的会影响你的长相
艾灸能促进血液循环吗
汉字“昊”的音韵、含义及艺术文化价值探究
复方玄驹胶囊长期服用的危害及注意事项
客厅挂中国结的风水宜忌
如何确定在某地购房首付的合理金额?首付金额的确定依据是什么?
十大单机策略游戏排行榜前十名 2024热门的单机策略游戏推荐
项目管理指数(PMI)的计算方法与应用
印媒:中国第1艘国产航母山东舰实现全天候战备 可更快部署舰载机
澳大利亚经济衰退警钟敲响,但很可能是公务员的锅?!
PHP连接MSSQL数据库的两种方法详解
选择拓展坞全攻略:接口类型、兼容性、性价比详细解析
如何挑选好的星月菩提
动力学实验:匀速直线运动与加速直线运动的比较
RTX3060游戏流畅运行秘籍
中小学智慧体育提升体育教学质量