tsung、jmeter、locust压测工具对比

 

一、tsung

优点:

1、它使用的是erlang中轻量级进程,因此模拟海量并发请求比较简单

erlang里面用户并不控制线程,而是创建大量的轻量级线程,erlang里面称为进程(process),以下简称进程。每个进程都可代表一个主动对象,它有事件循环,各个进程间通过消息来通讯。一个进程向另一进程发送消息后,可以进入接收状态,这时候真正的线程会把执行权切换到其它进程,如果另一进程得到执行权,如果它回复了消息,再经过一些执行权的切换以后,原来发送消息的进程得到执行权,它就可以收到消息了,这个复杂的过程可能只需要一个线程就可以完成,程序的编写却是使用同步的方式,完全感觉不到底层的切换,你唯一需要的就是毫无顾忌地创建进程(别当真,创建几十万个就收手吧)。erlang底层通常只需要1个线程就可以完成这些复杂的工作。

2、分布式压测仅需要在控制机上执行对应脚本即可,从机不需要拿到脚本

缺点:

1、使用XML来定义用户行为(难用!!!),且分布式测试查看日志较为麻烦,需要自己整理

2、环境部署较为麻烦(erl、perl、gnuplot、tsung),主机必须能够通过域名免密登陆从机,且各个依赖版本必须相同。

3、不再维护,且文档较少,因此遇到问题较难解决

二、jmeter

优点:

1、可视化界面导致其操作简单,创建测试场景以及用户行为通过点击即可完成(同样是缺点)

2、插件丰富,可以自定义安装各种插件来满足要求

3、使用者较多,网上文档较多

4、单机环境部署较为简单(java+jmeter)

缺点:

1、它使用的是线程,需要给每个用户创建一个线程,因此模拟海量并发请求较为困难

2、模拟海量并发请求需要大量机器,导致部署环境以及排查问题比较困难

3、从机也需要放置脚本,因此读取测试数据时需要注意每台机器的数据不能重复(比如读取用户名,需要使每台机器的测试数据不一致)

三、locust

优点:

1、它使用的是协程,因此实现模拟海量并发请求比较简单

2、可以使用python编写脚本,可以满足自定义需求

3、使用者较多,网上文档较多

4、环境部署较为简单(python3+locust)

缺点:

1、由于使用协程,每台机器必须运行与CPU核心数量相同的loucst进程(比如一台从机CPU是4核的,就需要执行4个locust进程)

2、同样需要注意每个进程读取的测试数据不能重复(可以通过redis分布式锁解决,最简单最笨的方式就是每个线程读取不同的测试数据文件)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值