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

  • 相关阅读:
    图书管理系统---基于form组件和modelform改造添加和编辑
    Keepalived和Heartbeat
    SCAN IP 解释
    Configure Active DataGuard and DG BROKER
    Oracle 11gR2
    我在管理工作中積累的九種最重要的領導力 (李開復)
    公募基金公司超融合基础架构与同城灾备建设实践
    Oracle 11g RAC for LINUX rhel 6.X silent install(静默安装)
    11gR2 静默安装RAC 集群和数据库软件
    Setting Up Oracle GoldenGate 12
  • 原文地址:https://www.cnblogs.com/zhaoxd07/p/7199188.html
Copyright © 2011-2022 走看看