本文章出自【码同学软件测试
码同学公众号:自动化软件测试
码同学抖音号:小码哥聊软件测试

近些年,随着互联网行业的不断发展,用户规模也有了爆发性的增长。产品的性能成为影响用户体验的重要因素。因此,性能测试越来越受到大型互联网企业的重视。
在做性能测试时,通常都会借助一些压测工具来模拟大量的并发用户。目前业界压测工具种类繁多,比如Loadrunner、Jmeter、Locust、Ngrinder、Apache ab、Wrk、Webbench等。

面临这么多的压测工具,我们应该如何做出选择呢?你在公司里现在用的是什么工具呢?

相信很多小伙伴此刻喊出了“Jmeter”的名字,确实是,这几年Jmeter因其使用简单,学习成本低,跨平台等特性,在行业内应用非常的广泛,拥有非常高的人气。作为一款网红工具,Jmeter既能做接口性能测试,也可以做自动化测试。深受广大人民群众的喜爱。

另一方面,Python语言近些年在行业里也非常火,人生苦短、我用Python!使用Python来做自动化和接口测试也是非常的方便。因此,Python届的压测工具Locust也逐步成为越来越多人的选择。
图片

那么,在实际性能测试过程中,到底选择Jmeter还是Locust,除了语言上的差异,它们各自有什么优点和缺点吗?
图片

今天,我会从不同的维度,对这两款工具来做下对比分析,希望能帮助大家选择适合自己的工具。

发压能力

一个压测工具的核心能力就是发压能力,每秒能发出多少请求,决定这个工具能产生多大的压力。我们先从发压能力来对这两款工具做下对比测试。

测试前的准备
为了方便测试,我首先准备了一个测试环境,一台压力机和一台web服务器,具体信息如下

为了更好的测试两个工具的发压能力,必须得找一个性能比较好的项目来做压测。就好比你现在要测试巅峰姚明的篮球技术,你用潘长江来陪练这就不合适了。你得把奥尼尔找来,这样姚明才能发挥出自己的全部能力。我在服务器上部署了一个性能VIP课上的接口项目,单接口能支持TPS 1w+

压力机上分别安装了Jmeter5.1和Locust 0.13
提前写好了Jmeter脚本和Locust脚本,两个脚本里均只保留了http请求和断言,为了测试最大压力,没有做任何参数化,也没有使用其他影响性能的组件和代码。
同时,为了避免链接数受限,已经优化了两台机器的文件句柄数和TCP参数。
好了,一切准备就绪,battle开始,Let’s go !

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦

测试场景一:相同并发下,对商品信息接口压测,测试工具的最高TPS

Jmeter测试
前置条件:为了提升性能,采用了no-gui模式压测,Jvm堆内存配置为2G。从10并发开始,压测运行2分钟
Jmeter测试结果

Jmeter结果分析:可以看到在20并发时,压力机的CPU已经达到了90%,接近极限,TPS为3979,web服务器CPU在80%以内,还有一些剩余空间,证明还是没压到极限。

Locust测试
前置条件:
1、考虑到Locust是单进程的,不能充分利用多核CPU,于是在压力机上开启一个master进程,2个slave进程,组成一个单机分布式系统。
2、将脚本中的wait_time设置为0,即多次循环之间不等待。
3、使用no-web模式进行压测(实际对比测试,web模式和no-web模式性能没明显差别)

Locust测试结果

看我结果我惊呆了,相同并发下,Jmeter跑出了3000+TPS,Locust只有1500+?而且还把压力机的CPU消耗到了100%
想到了Locust官网曾提到过,默认情况下,Locust使用requests库发送HTTP请求,性能不太好,如果要产生更高的压力,建议使用FastHttpLocust作为HTTP客户端来压测,性能可以提升5-6倍

赶紧改了下Locust脚本,使用了FastHttpLocust客户端,再次进行压测,结果如下

可以看到,使用FastHttpLocust客户端后,Locust性能大幅提升,在10并发时,TPS就达到了4014,因为压力机CPU已经100%了,所以20并发下,TPS并没有什么明显增长。

场景总结

1、 在相同硬件配置,测试相同接口,使用相同的并发情况下,Locust产生的压力确实高于Jmeter,这个也是由于他们的底层实现机制不同,Jmeter基于多线程,Locust基于协程
2、 无论采用哪个工具,单机能产生的TPS大体差不多,相比来说,Locust用更少的并发就能达到相同的TPS。不过Locust对压力机的CPU消耗也更高
3、 Locust默认的HttpSession客户端确实挺垃圾的,做压测还是建议使用FastHttpLocust客户端,但是Locust官网也提到了,FastHttpLocust并不能完全替代HttpSession,这个还得取决于测试场景,所以这点也是使用中的一个风险

测试场景二:相同配置下,测试工具能支持多少并发
前置条件:
在上一个测试场景中,无论Jmeter还是Locust,在20并发时,压力机CPU会接近100%了,所以为了测试更高的并发,就得需要换一个性能差一些的接口。大家记住一点,性能差的接口比性能好的接口支持更高的并发
还是先测试Jmeter,从1000并发开始测,逐步增加到10000并发,结果如下

场景总结

从上面两个工具的高并发测试来看,相同配置的机器上,两个工具都可以跑出1w并发,不过Jmeter使用的内存高于Locust。再高的并发,个人感觉没有必要了,单机1w并发已经满足绝大多数的项目了(在线下测试,大部分项目几十并发就能测出拐点),如果需要更大规模的,还是建议用多台机器分布式发压。

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦

以上两个测试场景,都是针对压测工具的核心能力:TPS能力和并发能力,接下来再来其他方面的对比

测试报告对比
Jmeter有比较丰富的HTML报表,各个维度都有

Locust提供了简单的数据实时报表,不过也够用

个人感觉在报表方面,两个工具相差不是很大,都基本能满足工作需求

学习成本 & 易用性方面

Jmeter有单独的GUI界面,有丰富的内置函数,在脚本编写方面确实比较简单,基本上不需要写任何代码就能完成比较复杂的场景。

Locust没有GUI界面,完全基于Python代码,所以你想使用什么功能,像参数化、关联、断言等,都得写代码来完成,相比来说学习成本更高。

最终总结

发压能力:相同并发下,Locust(使用FastHttpLocust)> Jmeter
并发能力:Locust和Jmeter旗鼓相当,都能满足工作需求,Jmeter消耗的内存更高
结果报表:Jmeter好于Locust,但是基本都满足工作需求
学习成果:Jmeter>Locust
易用性:Jmeter > Locust

使用建议

如果只是做简单的接口测试、压力测试,没有需要写代码来扩展的特殊需求,首选Jmeter;
如果某些测试场景需要写代码来扩展,你会Java的话,可以选择Jmeter;
如果某些测试场景需要写代码来扩展,你会Python的话,可以选择Locust;
如果想在单台机器发起更大的压力的话,并且Python代码能力不错的话,可以选择Locust,记得一定要使用FastHttpLocust客户端

笔者跟大家分享一个福利!扫码回复【csdn码哥群】入软件测试自学交流群,可免费听技术讲座+领学习资料+视频课免费看

作者:码同学软件测试
本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

阿里性能专家全方位对比Jmeter和Locust,到底谁更香?相关推荐

  1. 鸿蒙系统和小米系统区别,华为鸿蒙系统对比小米MIUI12,到底谁更强!

    原标题:华为鸿蒙系统对比小米MIUI12,到底谁更强! 华为鸿蒙和小米MIUI都非常优秀,深入人心.这里咱们需要明确一点,小米的米ui十二不能算的是新操作系统,就如鸿蒙系统,米MIUI前面的米指的就是 ...

  2. 黑羽压测 比 jmeter、locust、loadrunner 更简便,性能更强

    视频讲解 点击下方链接,观看 讲解视频 https://www.bilibili.com/video/av60089015/ 动机 目前市场上对API接口做性能测试工具有 Jmeter.LoadRun ...

  3. 骁龙870对比天玑1200,到底谁更优秀?

    ①骁龙870只是 NSA\SA 但是 天玑1200是SA\SA,而且天玑1200还支持双载流聚合 ,信号强于骁龙870 ②天玑1200ai能力比骁龙870强30%,虽然这个这个功能在日常生活中很玄学, ...

  4. 华为鸿蒙对比小米,华为鸿蒙系统对比小米MIUI12,到底谁更强!

    ui设计在互联网百科中是这样解释的,ui设计是指对软件的人机交互操作逻辑.界面美观的整体设计,简单翻译一下,就是界面设计.表面内容的设计.emui作为华为多年发展的一个产品,经过不断的优化和迭代,才有 ...

  5. 压测工具哪家强,LR? jmeter?locust? wrk 全方位对比

    当你想做性能测试的时候,你会选择什么样的测试工具呢?是会选择wrk?jmeter?locust?还是loadrunner呢?今天,笔者将根据自己使用经验,针对jmeter.locust.wrk和loa ...

  6. 探索fio参数如何选择以及全方位对比HDD和SSD性能

    由于公司要部署一套Ceph环境,趁任务并不太着急,在部署之前先对HDD和SSD进行周密的测试,以便和部署之后的Ceph服务能力(RBD.CephFS.NFS的性能)进行对比. 本文的目的是解答如下几个 ...

  7. 阿里P9专家右军:大话软件质量稳定性

    P 右军 读完需要 17 分钟 速读仅需 6 分钟 右军(于君泽),蚂蚁金服 P9 技术专家,在 IT 领域从业超过十五年.对 高并发.分布式架构.内建质量.研发管理有一些心得.维护公众号" ...

  8. 【沉淀】从网络中间件到搜索,从移动开发到分布式计算平台,阿里高级专家李睿博谈自己的折腾路...

    <沉淀>是云栖社区展示专家风采的人物栏目.它呈现每个专家独一无二的人生经历.认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断.我们的想法是:"若你想精进为一个很厉害的 ...

  9. 年薪50w+的阿里p7专家,顶尖的技术人才,只因做到了这几点

    年薪50w+的阿里p7专家,顶尖的技术人才,只因做到了这几点 置顶 2018年03月11日 21:51:38 阅读数:3544 最近部门招聘,很多工程师,包括我在内都参与了内推和面试的过程,经过这次招 ...

最新文章

  1. wangEditor编辑器中解析html图文信息问题(三)
  2. ds28e01完全数据手册_如何借助《活动管理手册》搭建营销体系?(内含课件PPT)...
  3. C++:05---class和struct
  4. ubuntu7.10 apache+php+mysql配置
  5. Activity 生命周期与状态保存
  6. TP5解析html 回显到页面上
  7. Node.js下载安装及各种npm、cnpm、nvm、nrm配置(保姆式教程---提供全套安装包)---npm的安装与配置(2)
  8. C++ 栈展开如何防止内存泄露
  9. LeetCode每日一题——剑指 Offer 10- I. 斐波那契数列
  10. HTML:H5新特性
  11. win7计算机桌面文件位置更改,Win7系统怎么更改桌面文件路径_win7修改桌面文件保存路径的方法...
  12. python图片马赛克_利用Python对图片进行马赛克处理
  13. 关于代码评审(CodeReview)那些不得不说的事儿
  14. 【FLASH实例1000教程】(4)上
  15. 用request获取请求地址Ip
  16. python皮卡丘字符打印代码_皮卡丘第二种
  17. 中国十大基金公司排行榜
  18. suse日志服务器配置
  19. UI5-Fiori初学者导航
  20. MATLAB绘制SOI指数

热门文章

  1. IAR Error[Pe020]: identifier 'FILE' is undefined 解决方法
  2. (面向对象)员工信息管理系统 1.当有新员工的时候将员工加入到管理系统 2.可以根据工号实现对该员工信息查询 3.可以现实查看所有员工信息 4.可以修改员工的薪水
  3. 转正答辩未通过是否可以辞退试用期员工
  4. es6+最佳入门实践(8)
  5. 【转载】人工智能发展简史
  6. 缓冲区溢出漏洞_缓冲区溢出漏洞简介
  7. 投影机基本故障及解决方法
  8. windows10 所有exe文件无法打开:鼠标右键没有”打开”;提示“该文件没有与之关联的程序来执行该操作”
  9. Vue 中常见的面试题/知识点整理
  10. pandas批量处理体育成绩