开源分布式压测引擎

Gatling Pea

https://github.com/asura-pro/pea/

banner.jpeg

关于 Gatling

Gatling 是基于 NettyAkka 技术实现的高性能压测工具.

关于 Pea

由于单独一台机器硬件资源和网络协议的限制存在, 在高负载测试中需要多台机器共同提供负载. Pea 是在以 Galting 为引擎, 在多节点场景下的压测工具. 包含以下特性:

  • 管理和监控多个工作节点. 依赖 Zookeeper

  • 运行过程中可以实时查看每个节点的具体执行状态

  • 多个节点执行完后会自动收集日志, 生成统一的报告

  • 支持原生的 Gatling 脚本, 原生的 HTTP 协议

  • 扩展支持了 DubboGrpc 协议

  • 以 Git 仓库管理脚本和资源文件

  • 内置了 Scala 增量编译器, 脚本可在线快速编译

  • 不同于其他实现, 所有这些功能都在同一进程内实现. 感谢 Gatling 作者高质量的代码

  • 可以在实体机, 虚拟机, Docker 容器中运行


脚本示例


import asura.pea.dubbo.Predef._

import asura.pea.dubbo.api.GreetingService

import asura.pea.gatling.PeaSimulation

import 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)

}


截图示例

创建任务

shoot-01.png

任务执行中的节点状态

shoot-job.png

整体报告

report-01.png

单个请求细节报告

report-02.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容