Jmeter & Locust 对比测试

最近公司有性能测试的需求并且由我来负责完成,刚好趁此机会探索对比下Jmeter和Locust。

测试环境

开了两台EC2,其中一台做压力机,另一台做服务器,配置为2核-8G。

在这里插入图片描述

准备工作

这里关于Jmeter,Locust 等相关的环境安装就不在赘述,百度上一搜跟着操作就完事…

1. 服务器准备

直接在EC2上起服务,对外提供了接口…
服务启动后进行测试…很简单的一个get接口,返回了固定的数据.
在这里插入图片描述

2. Jmeter脚本准备

非常简单的一个脚本…不在赘述
在这里插入图片描述

3. Locust脚本准备

也是非常简单的一些代码,参考官方demo即可完成,需要注意的是,这里我们使用FastHttpUser,性能上比HttpUser高非常多。

from locust import task,FastHttpUser
class ProductUser(FastHttpUser):
    @task
    def get_product_list(self):
        self.client.get("/api/v1/product/list")

结果对比

Jmeter GUI 模式—Locust 控制台启动 headless

1. 低延迟接口

Locust web模式下不支持指定运行时间…这里使用控制台启动

工具并发用户数运行时间总请求数TPS
Jmeter101min3669706116.8/s
Locust101min1540402599.1/s

从以上结果中可以看出来,Jmeter的发压能力明显要高于Locust大概两倍多一点。
由于我们的压力机是2核的,我们再此场景下试下Locust分布式看看会不会有所提升…
–expect-workers=2 表示2个workers连接成功后才会开始
master:

locust -f locustfile.py --master -u 10 -r 10 -t 1m -H http://13.232.174.90:8080 --headless --expect-workers=2

worker:

locust -f locustfile.py --worker
工具并发用户数运行时间总请求数TPS
Jmeter101min3669706116.8/s
Locust101min2231423703.7/s

看上去是有所提升的…但是还是没干过Jmeter(运行期间cpu占用率非常高,这可能是Locust无法产生更多压力的原因吧…)
测试到这实际上Locust基本上已经到瓶颈了,CPU已经爆了…但为了验证这一观点,我们继续增加并发用户数测试看看…

工具并发用户数运行时间总请求数TPS
Jmeter151min4919028214.4/s
Jmeter301min552190N/A
Jmeter401min567633N/A
Jmeter501min569544N/A
Jmeter601min507048N/A
Jmeter1001min518299N/A
Jmeter5001min602410N/A
Jmeter10001min618274N/A
Jmeter15001min717878N/A
Jmeter20001min638343N/A
Locust151min2518884175.3/s
Locust501min2946394880.5/s
Locust1001min3000824974.1/s
Locust5001min3002974899.2/s
Locust20001min2708024531.1/s

结论:从以上数据中可以看出来Jmeter明显优于Locust

1. 高延迟接口
工具并发用户数运行时间总请求数TPS
Jmeter501min11527190.8/s
Jmeter1001min23069381.4/s
Jmeter5001min48031789.6/s
Jmeter10001min48418787.1/s
Jmeter15001min48994785.1/s
Locust501min11925198.8/s
Locust1001min23686394.8/s
Locust5001min47635793.3/s
Locust10001min47469789.2/s
Locust15001min47203783.7/s

结论:在耗时的接口上Jmeter和Locust两者的结果基本是差不多。

结论&总结

本文分别使用Jmeter和Locust 对两个接口进行了压测,在低延迟接口上Jmeter明显优于Locust…而在高延迟的接口上Jmeter和Locust基本达成平手。如果Jmeter使用命令行模式的话应该还能有所提升…

所以如果有变成能力的或者场景比较复杂推荐实用Locust会更方便一些,常规的场景测试推荐实用Jmeter…,另外在分布式上Locust会更简单些。

至于为什么在低延迟的接口上Jmeter明显优于Locust,而在高延迟的接口上两者基本持平,这个问题暂时还没有想明白…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值