zoukankan      html  css  js  c++  java
  • 性能测试-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要求的。

    其他

    http压测工具:wrk

  • 相关阅读:
    SQL整理5
    SQL整理1 数据类型
    SQL整理2
    JavaScript 的DOM操作
    JavaScript 数据类型
    JavaScript
    CSS样式表
    sqlserver数据库 提纲
    Python基础第十二天:二分法算法
    Python基础第十一天:递归函数
  • 原文地址:https://www.cnblogs.com/zhaoxd07/p/7199188.html
Copyright © 2011-2022 走看看