Galting Pea
#
关于 GatlingGatling 是基于 Netty 和 Akka 技术实现的高性能压测工具.
#
关于 Pea由于单独一台机器硬件资源和网络协议的限制存在, 在高负载测试中需要多台机器共同提供负载. Pea
是在以 Galting
为引擎, 在多节点场景下的压测工具. 包含以下特性:
- 管理和监控多个工作节点. 依赖 Zookeeper
- 运行过程中可以实时查看每个节点的具体执行状态
- 多个节点执行完后会自动收集日志, 生成统一的报告
- 支持原生的 Gatling 脚本, 原生的
HTTP
协议 - 扩展支持了
Dubbo
和Grpc
协议 - 以 Git 仓库管理脚本和资源文件
- 内置了 Scala 增量编译器, 脚本可在线快速编译
- 不同于其他实现, 所有这些功能都在同一进程内实现. 感谢 Gatling 作者高质量的代码
- 可以在实体机, 虚拟机, Docker 容器中运行
#
脚本示例import asura.pea.dubbo.Predef._import asura.pea.dubbo.api.GreetingServiceimport asura.pea.gatling.PeaSimulationimport io.gatling.core.Predef._
class DubboGreetingSimulation extends PeaSimulation { override val description: String = """ |Dubbo simulation example |""".stripMargin val dubboProtocol = dubbo .application("gatling-pea") .endpoint("127.0.0.1", 20880) .threads(10) val scn = scenario("dubbo") .exec( invoke(classOf[GreetingService]) { (service, _) => service.sayHello("pea") }.check(simple { response => response.value == "hi, pea" }).check( jsonPath("$").is("hi, pea") ) ) setUp( scn.inject(atOnceUsers(10000)) ).protocols(dubboProtocol)}
#
视频演示https://www.bilibili.com/video/av73339161/
#
截图示例创建任务
任务执行中的节点状态
整体报告
单个请求细节报告