• 性能测试-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要求的。

  • 相关阅读:
    web安全:防止浏览器记住或自动填写用户名和密码(表单)的解决方案
    Sql CLR创建一个简单的表值函数
    html中实现某区域内右键自定义菜单
    HTML5单页框架View.js介绍
    Java使用apache的开源数据处理框架commons-dbutils完成查询结果集的各种处理输出(8种方式)
    【EAS】【BOS】如果使用BOS开发工具连接远程应用服务进行调试
    VSFTPD 550 Delete operation failed.
    两款不错的js甘特图控件
    我的node-webkit笔记
    node-webkit,nwjs 系统托盘【Tray】实践
  • 原文地址:https://www.cnblogs.com/yanghj010/p/9575269.html
Copyright © 2020-2023  润新知