工具对比"/>
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分布式锁解决,最简单最笨的方式就是每个线程读取不同的测试数据文件)
更多推荐
tsung、jmeter、locust压测工具对比
发布评论