Gatling 是开源、高性能、代码化负载 / 压力测试框架 ,基于 Scala + Netty + Akka 异步非阻塞引擎,对标 JMeter,专为 Web、API、微服务高并发压测设计,无笨重 GUI、脚本易版本管理、单机并发极强。
一、核心定位与优势
1. 一句话简介
主打 Test as Code(代码即测试) ,用 DSL 编写压测场景,原生异步 IO,单台机器可支撑数万甚至数十万虚拟用户并发,自动生成精美 HTML 性能报告,完美适配 CI/CD、微服务、高并发接口压测。
2. 对比 JMeter(最关键区别)
表格
| 对比维度 | Gatling | JMeter |
|---|---|---|
| 底层架构 | 异步非阻塞 Netty/Akka,无线程瓶颈 | 同步阻塞,1 虚拟用户≈1 线程,并发上限低 |
| 脚本方式 | 代码 DSL(Scala/Java/Kotlin/TS),Git 可管理 | GUI 可视化 + XML,版本管理差、维护臃肿 |
| 资源消耗 | 极低,CPU / 内存占用小 | 高,大并发易卡顿、机器负载飙升 |
| 报告 | 原生实时精美 HTML 动态报告,指标全 | 报告简陋,需插件扩展 |
| 协议原生 | HTTP/HTTPS、WebSocket、gRPC、Kafka、MQTT、JMS | HTTP 为主,其他协议大量依赖第三方插件 |
| 入门门槛 | 略高(需代码基础) | 低(鼠标拖拽) |
3. 核心亮点
- 极致高性能:打破线程模型限制,压测自身开销极小,不会成为瓶颈
- 多语言 DSL :原生 Scala,官方支持 Java、Kotlin、JavaScript/TypeScript,Java 开发者无需学 Scala
- 全链路指标:RPS、响应时间、百分位(P95/P99)、失败率、吞吐量、请求耗时分布
- 内置录制 / HAR 导入:Gatling Studio 可视化录制,自动转代码脚本,降低入门难度
- CI 原生集成:完美对接 Jenkins、GitLab CI、GitHub Actions,支持性能门禁、回归告警Gatling
- 开源免费:社区版完全开源无限制;另有 Gatling Enterprise 企业版(分布式压测、团队协作、云负载、SLA 监控)
二、核心概念(必懂)
- Scenario(场景):定义虚拟用户完整行为链路(请求、间隔、跳转、业务流程)
- Injection(注入模型):虚拟用户并发加载策略(匀速、阶梯递增、突增、波峰波谷)
- HTTP Request:接口请求封装(GET/POST、Header、Body、Cookie、Session)
- Check(断言校验):响应状态码、JSON/XML 提取、Token 关联、业务结果校验
- Feeder(数据喂入):参数化数据源(CSV、JSON、随机数据),模拟多用户账号、参数遍历
- Report(报告):测试结束自动生成静态 HTML 全量分析报告,含趋势图、百分位统计、失败明细
三、最简入门示例(Scala DSL)
scala
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
// 继承 Simulation 基类
class BasicSimulation extends Simulation {
// 全局HTTP配置
val httpConf = http.baseUrl("https://api.example.com")
// 定义业务场景:用户访问接口
val scn = scenario("Demo压测场景")
.exec(
http("首页请求")
.get("/")
.check(status.is(200)) // 断言状态码200
)
.pause(1.second) // 用户思考时间
// 注入策略:100个用户,10秒内匀速加载完成
setUp(
scn.inject(rampUsers(100).during(10.seconds))
).protocols(httpConf)
}
四、支持协议
- Web 类:HTTP/HTTPS、WebSocket、SSE
- 微服务 / 中间件:gRPC、Kafka、JMS、MQTT
- 可插件扩展自定义协议
五、适用业务场景
- RESTful API、后端接口高并发压测、性能回归
- 电商秒杀、抢购、大流量入口接口稳定性验证
- 微服务集群全链路负载测试
- Kafka/RabbitMQ 消息队列吞吐量压测
- CI 流水线常态化性能门禁(代码提交自动压测)
- 大规模、长时长疲劳稳定性测试
六、版本与生态
- 开源社区版:Gatling OSS,完全免费开源
- 商业企业版:Gatling Enterprise,分布式集群压测、云负载生成、团队权限、SLA 告警、历史版本对比
- 配套工具:Gatling Studio(免费可视化录制器,浏览器操作自动生成脚本)
七、与你之前关注的 JMeter 对比总结
- 做小体量、快速简单压测、无代码基础:选 JMeter
- 做高并发大规模压测、微服务、CI 集成、脚本长期维护、开发团队协作:优先 Gatling