性能测试-Gatling

Posted yanghj010

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试-Gatling相关的知识,希望对你有一定的参考价值。

背景说明转自 : http://www.infoq.com/cn/articles/new-generation-server-testing-tool-gatling/

以前Jmeter用的多,如文档中所说,实际使用后发现Jmeter多用户时很容易并发并发不均匀,导致一些数据统计不准确。

Jmeter & Gatling的QPS统计

技术分享图片技术分享图片

 

因此我们选用gatling来进行http的压测

实践步骤:

http://gatling.io/docs/current/quickstart/

一  下载

wget  https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/2.2.5/gatling-charts-highcharts-bundle-2.2.5-bundle.zip
unzip gatling-charts-highcharts-bundle-2.2.5-bundle.zip

1 注意尽量不要放在工程目录下,预防出现权限问题

2 注意java版本的匹配  java -version

3 gatling的默认编码方式为utf-8,若需更改,编译conf/gatling.conf文件

二 检查环境 

cd bin && sudo sh gatling.sh

正确情况如下:

选取一个要跑的脚本需要,两次enter:

技术分享图片

将提示的result目录下内容打开如下:

技术分享图片

galing需要java环境,若无则需要配置;注意使用权限

三  应用

环境调通了,就开始写自己的scala脚本进行压测了,不熟悉scala的同学也没有关系,记住几个地方,抄一下就可以了~

 1  单场景测试 

     较为简单的单场景demo:get请求百度,不同的参数    

技术分享图片
package computerdatabase

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

class MyTestSimulation extends Simulation {
  val httpConf = http
    .baseURL("http://www.baidu.com")                  //①
    .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
    .acceptLanguageHeader("en-US;q=0.5")
    .acceptEncodingHeader("gzip, deflate")
    .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0")

  val feeder = csv("baidu_search.csv").random         //②

  val scn = scenario("MyTestSimulation")              
    .feed(feeder)                                     //③
    .exec(http("request_1")                           //④
    .get("/s?${params}")                              //⑤
    .check(status.is(200)))              

  setUp(scn.inject(constantUsersPerSec(150) during (30 seconds) ).protocols(httpConf))     //⑥
技术分享图片

准备csv数据在data目录下,文件名为baidu_search.csv,内容如下:

params
ie=utf-8&wd=1
ie=utf-8&wd=2
ie=utf-8&wd=3

注释:

class后面的名字会出现执行gatling后的可选列表里

① baseurl即域名

② 定义要读取的参数文件

③ 把指定读取参数文件定义的变量写进来

④ 这个名字会用在生成的报告里

⑤ 读取参数文件中的列

⑥设置每秒请求数qps和持续时间duringTime

 

 啦啦啦,找到一个小抄,各种参数的含义解释,简直开挂,吓哭我了:

http://gatling.io/docs/current/cheat-sheet/

技术分享图片

 

 

 

四  问题&解决

我第一次使用dev权限,该权限下java  javac命令均可正确使用,但是执行失败,更改为root可行,觉得可能是gatling要求的。

技术分享图片

以上是关于性能测试-Gatling的主要内容,如果未能解决你的问题,请参考以下文章

性能测试之 Gatling

Gatling性能测试工具入门

性能测试工具之Gatling

gatling高性能测试工具

web性能测试的新利器 - Gatling 介绍

性能测试工具Gatling - 设置Recorder