Trombi - 灾难性的负载测试利器
Trombi 是一个由 Clojure 编写的高效负载测试工具,它能够以Clojure数据结构或图形报告的形式产出测试结果,特别适合状态型应用的脚本逻辑测试。原名为 clj-gatling 的它,如今已演变为拥有自己独特设计的独立工具,尽管仍然与 Gatling 高级图表库兼容。
安装
将以下依赖添加到你的 project.clj
文件的 :dependencies
中:
[com.github.mhjort/trombi "版本号"]
(此处替换为实际的最新版本号)
请注意,Trombi 已经改名,但对旧版用户的代码仍保持向后兼容性,无需修改即可直接运行原有的 clj-gatling 测试。
使用
下面是一个简单的例子,展示了如何进行100个并发的本地HTTP GET请求:
(require '[trombi.core :as trombi]
'[org.httpkit.client :as http])
(defn localhost-request [_]
(let [{:keys [status]} @(http/get "http://localhost")]
(= status 200)))
(trombi/run
{:name "Simulation"
:scenarios [{:name "Localhost test scenario"
:steps [{:name "Root"
:request localhost-request}]}]}
{:concurrency 100})
测试结束后,会打印出统计信息,并返回类似如下的结果:
{:ok 90 :ko 10 :response-time {:global {:min 20
:max 500
:mean 154}}}
其中 ok
表示成功请求数,ko
代表失败请求数,而 response-time
则给出响应时间的最小值、最大值和平均值。
若想生成图形报告,可以加入额外的依赖并指定报告器:
(require '[trombi-gatling-highcharts-reporter.core])
(trombi/run your-simulation
{:concurrency 100
:reporters [trombi-gatling-highcharts-reporter.core/reporter]})
这会使用 Gatling 高级图表报告器创建图形化报告,位置将在输出中显示。
项目特点与应用场景
概念与特点
- 模拟概念:Trombi 执行模拟来模拟负载,模拟由一个或多个并行执行的场景构成,每个场景又由一系列顺序执行的步骤组成。
- 全局钩子:支持在模拟开始前和结束后执行预置函数,用于设置环境或清理工作。
- 动态场景:通过自定义函数动态决定下一步操作,提供更大的灵活性。
- 统计反馈:返回详细的响应时间和每秒请求数等统计信息,便于性能分析。
- 异步控制:提供了
run-async
函数,允许您更精细地控制模拟执行。
应用场景
Trombi 可广泛应用于各种场景,包括但不限于:
- Web 服务性能测试:检查服务器在高并发情况下的响应速度和稳定性。
- 数据库压力测试:评估数据库在大规模读写操作下的表现。
- API 性能验证:确保 API 能够满足性能要求和SLA。
- 微服务集成测试:在模拟真实环境中的复杂交互下测试微服务架构。
Trombi 的强大功能和灵活的设计使其成为负载测试的理想选择,无论您的应用程序多么复杂。现在就尝试使用 Trombi,提升您的性能测试体验吧!