- 脚本
locust使用写脚本的方式,方便对于python有一定基础的人,可以随着自己的想法进行脚本的编写
jmeter通过可视化工具,填写后保存。上手难度低,适合所有人员。 - 运行
locust有两种启动,一种通过web模式控制,还有一种通过命令行控制
jmeter有两种启动,一种通过可视化工具控制,还有一种也是通过命令行控制 - 调试
locust脚本编写时,几乎无调试方式,只能靠运行查看,不方便
jmeter脚本编写时,使用查看结果树就能查看到具体的结果 - 分布式
locust无论是否使用web,分布式执行指令即可,可以按照分布机的情况,控制分布worker的数量。
jmeter分布式命令行模式控制稍繁琐,可视化界面需要配置文件中指定机器,而且https互通时,还需要互相传递秘钥。
综上,jmeter可以指定运行的机器,但是需要配置。locust被动接受运行机器,但是当一个机器断开后,不会重新分配。分布方法都还可以,挺简单。 - 报告
locust真的是简陋,只有tps、响应时间、并发数的图,还有错误信息,但是80%的信息都包含了,只能满足可用。
jmeter可以生产html的报告,乍一看很强大,很详细,但是可用的数据不多,io使用情况以及少量图表可以借鉴。
综上,报告都一般,主要的信息都提供了,其余的需要自己汇总和参考。 - 运行时
主要监控消耗的内存和cpu数据(本机4核cpu),并产出的压力tps的值
情况一:模拟一个简单的接口,请求就返回,单进程,平均响应时间非常快
- locust的web模式:
非分布式:
cpu占用最多24%,内存占用50M+,最后产生tps 600+
分布式(3个):
cpu占用总和最多70%,内存占用总和120M+,最后产出的tps 650+ - lucust的命令行模式:
cpu占用最多24%,内存占用46M+,最后产生tps 600+
分布式(3个):
cpu占用总和最多70%,内存占用总和110M+,最后产出的tps 650+ - jmeter可视化工具:
cpu占用44%,内存占用1250M+,最后产生tps 900+ - jmeter命令行:
cpu占用46%,内存占用550M+,最后产生tps 1200+ - 综上,当前情况下,即响应快,需要cpu大量参与的情况,jmeter的命令行,优势非常明显,而且占用的内存比可视化工具少很多,cpu消耗比locust分布式小一些。
情况二:模拟一个简单的接口,请求后等待0.05秒才返回,单进程
- locust的web模式:
非分布式:
cpu占用18%,内存占用50M+,最后产生tps 19.1
分布式(3个):
cpu占用总和36%,内存占用总和120M+,最后产出的tps 19.2 - lucust的命令行模式:
cpu占用17%,内存占用46M,最后产生tps 19.2
分布式(3个):
cpu占用总和35%,内存占用总和110M,最后产出的tps 19.4 - jmeter可视化工具:
cpu占用19%,内存占用950M+,最后产生tps 19.2 - jmeter命令行:
cpu占用12%,内存占用370M+,最后产生tps 19.4 - 综上,当前情况下,即响应时间一般,两个工具消耗的cpu相近,内存使用jmeter偏高
- 写在最后
还有很多想比较的地方,待下回分解
总体推荐使用jmeter,但是期望二次开发,两者都可以,但是个人喜欢在locust的基础上,二次开发。