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

很多时候我们需要了解数据库的性能,因此基准测试是很有必要的,但是基于sysbench等工具进行的基准测试只能说明数据库本身的吞吐量。有的时候我们需要知道某一个函数,某一个存储过程,某一个表或者某一个数据库接口的性能,这个时候如果能编写代码进行定制化并发测试就好了。
Gatling就可以满足我们的这个需求,而且报告比sysbench的要易于阅读。
2. 利用Gatling进行数据库接口性能测试
Gatling可以在官网上进行下载,下载好以后是这样一种目录结构:

bin中是可执行文件,所有的测试脚本都要放在user-files\simulations目录下。
利用SpringBoot可以轻松的实现RESTful风格的接口,用于访问数据库,我们现在提供一个POST接口用于向数据库中写入一条数据。
curl -X POST \http://10.1.20.96:8080/seq/save \-H 'Postman-Token: 66a84769-58b9-4fa5-81d7-50e07996b739' \-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就可以了:

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

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