JMeter和Tsung有什么区别?我读到如果使用相同的硬件进行测试,Tsung 可能会产生比 JMeter 更多的负载,但它与现实有多接近?
2 回答
Tsung 是用 Erlang 编写的,据说能够同时运行大量用户(10000+)
Jmeter 是用 Java 编写的,如果你的测试计划很好的话,它能够产生大量的负载。
以下是关于 JMeter 性能的一些限制
Jmeter 中的每个用户都是一个操作系统线程。当使用大量并发用户时,这会增加开销(jmeter 最佳实践建议使用少量线程,http://jmeter.apache.org/usermanual/best-practices.html - 根据我的经验,您在使用时可能会遇到问题每个 jmeter 实例有超过 1000 个线程,但这可能会因您的测试计划而有很大差异)。运行大型测试时,您还需要调整 JVM 设置。
如果您有动态脚本(由于 jmeter 变量扩展,每次都必须重新编译脚本),您可以轻松地破坏性能并耗尽 PermGen 内存。将脚本放在单独的文件中或使用编译缓存键来避免重新编译。
使用一些测试组件(例如,将每个请求和响应保存在内存中的树视图)可能会对负载生成器造成严重破坏
我已经使用 JMeter 测试了一些非常大的站点,只要您能够减少线程数量(减少用户等待以将吞吐量保持在所需水平),Jmeter 就可以了。JMeter 周围有相当大的社区,使用大量协议进行负载测试的插件和监控各种系统。JMeter 也有很好的脚本支持——java、javascript,基本上可以加载到 jvm 中的任何东西(包括例如 groovy),所以它非常可扩展。
有一次(我认为使用 jmeter 2.6)我每秒从单个负载生成器运行大约 30,000 个数据库请求(Oracle JDBC),并且从那以后进行了一些优化,所以只要您没有极端要求,Jmeter 就可以了。选择一个适合您的需求和经验的。
注意:我使用 Tsung 的经验很少。
编辑:现在我使用蝗虫(https://github.com/locustio/locust/)。Tsung 自 2017 年以来一直没有更新,Locust 的用户/线程模型(greenlets)支持的并发用户比 Jmeter 多。但最重要的是它有一个更灵活的工作流程(实际的 Python 代码而不是在 GUI 中配置/单击)
它始终取决于您的场景和用于可变性的数据量,比率接近 10,当您能够使用 JMeter 运行 100 个用户/秒时,Tsung 将轻松使用 1000 个用户/秒。