在做性能测试时,通常都会借助一些压测工具来模拟大量的并发用户。目前业界压测工具种类繁多,比如Loadrunner、Jmeter、Locust、Ngrinder、Apache ab、Wrk、Webbench等,其中开源的要以java的jmeter和pythonlocust首当其冲,那么今天就来说说他们之前的区别。
Apache JMeter和Locust都是是最受欢迎的性能测试工具。当你想做性能测试的时候,你会选择什么样的测试工具呢?是会选择jmeter?locust?今天将根据自己使用经验,针对jmeter、locust常用的性能测试工具进行简单介绍和对比。
jmeter 介绍
Apache JMeter可用于测试静态和动态资源,Web动态应用程序的性能。它可用于模拟服务器,服务器组,网络或对象上的繁重负载,以测试其强度或分析不同负载类型下的整体性能。
jmeter的优缺点:
Locust介绍
Locust是一个开源负载测试工具。使用 Python 代码定义用户行为,也可以仿真百万个用户。Locust 是非常简单易用,分布式,用户负载测试工具。Locust 主要为网站或者其他系统进行负载测试,能测试出一个系统可以并发处理多少用户Locust 是完全基于时间的,因此单个机器支持几千个并发用户。相比其他许多事件驱动的应用,Locust 不使用回调,而是使用轻量级的处理方式协程。
Jmeter和Locust对比:
locust VS jmeter 在压测时的效率对比
from locust import HttpLocust,TaskSet,task,between
classMyBlogs(TaskSet):
@task(1)
defget_blog(self):
header ={
}
body ={
"roomId":"158589982254376"
}
req = self.client.get("/api/v1/model", headers=header, params=body, verify=False)
# print(req.text)
# if req.status_code == 200:
# print("success")
# else:
# print("fails")classwebsitUser(HttpLocust):
task_set = MyBlogs # 设置用户执行任务之间等待的上下限,单位秒
wait_time = between(3,6)
# # 等同于上面wait_time,单位毫秒
# min_wait = 3000
# max_wait = 6000
host ="http://benchmark-server.xxx.com"
if __name__ =="__main__":
import os # master 启动
# os.system("locust -f locusttest.py --master")
# slave 启动
os.system("locust -f locusttest.py --slave --master-host=10.200.0.219")
Jmeter:
压测结果对比:
对比结论
1. 模拟tps
cpu 1c locust可以模拟tps 700, jmeter可以模拟tps 3200
cpu 2c locust可以模拟tps1400,jmeter可以模拟tps 6400
2. 响应时间
当单核的cpu小于80%时,locust响应时间与服务响应时间相差不大,当cpu大于80%时,出现500ms+的响应时间偏差
jmeter在cpu打满时,与apm监控实际处理时间依然小于10ms
绵薄之力
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….