1. Gatling工具简介

Gatling官方称其是一个开源的负载测试解决方案。Gatling可以通过编写简单的scala脚本来实现定制化的测试任务,并且能自动生成网页来展示测试报告,其图形化报告如下:

image.png

很多时候我们需要了解数据库的性能,因此基准测试是很有必要的,但是基于sysbench等工具进行的基准测试只能说明数据库本身的吞吐量。有的时候我们需要知道某一个函数,某一个存储过程,某一个表或者某一个数据库接口的性能,这个时候如果能编写代码进行定制化并发测试就好了。

Gatling就可以满足我们的这个需求,而且报告比sysbench的要易于阅读。

2. 利用Gatling进行数据库接口性能测试

Gatling可以在官网上进行下载,下载好以后是这样一种目录结构:

image.png

bin中是可执行文件,所有的测试脚本都要放在user-files\simulations目录下。

利用SpringBoot可以轻松的实现RESTful风格的接口,用于访问数据库,我们现在提供一个POST接口用于向数据库中写入一条数据。

  1. curl -X POST \
  2. http://10.1.20.96:8080/seq/save \
  3. -H 'Postman-Token: 66a84769-58b9-4fa5-81d7-50e07996b739' \
  4. -H 'cache-control: no-cache'

下面这段代码就是测试POST接口的:

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class JsonSimulation extends Simulation {
    val httpConf = http.baseUrl("http://127.0.0.1:8080")
    val contentType = Map("Content-Type" -> "application/x-www-form-urlencoded")
    val scn = scenario("json scenario").repeat(1000) {
        exec(http("test_json")
        .post("/seq/save")
        .headers(contentType))}
    }
    setup(scn.inject(atOnceUsers(500))).protocols(httpConf)
}

这段代码仅仅是简单的请求了我写的POST接口,重复了1000次,每次开500个并发。主要经历了三个步骤:

  • http head配置
  • scenario执行细节
  • setUp组装

在Windows上我们只需要执行gatling.bat就可以了:

image.png

红色框处就是刚才自定义的脚本了,键入0,敲击两次Enter就可以开始执行测试了,其结果如下:

image.png

这里有request和response的报告信息。

也可以在命令行上打印出来的路径中找到HTML界面,以可视化的方式查看测试的详细报告。