在做性能测试时,通常都会借助一些压测工具来模拟大量的并发用户。目前业界压测工具种类繁多,比如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


绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐