背景说明转自 : 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=

注释:

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

① baseurl即域名

② 定义要读取的参数文件

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

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

⑤ 读取参数文件中的列

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

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

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

四  问题&解决

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

最新文章

  1. varchar2_to_blob,应用向数据库更新LOB字段时的超时问题
  2. 【转载】MFC键盘响应
  3. BZOJ1196: [HNOI2006]公路修建问题
  4. 分类-Category
  5. compass sprite
  6. cxf所用的lib
  7. linux修改主机名-IP
  8. sql的集合运算
  9. 移动HTML 5前端性能优化指南(转载)
  10. Netty学习笔记(二)
  11. 博弈论进阶之Multi-SG
  12. jmeter基本使用
  13. Quartz入门及简单实现
  14. 【Graphite】使用dropwizard.metrics向Graphite中写入指标项数据
  15. luogu Eat the Trees
  16. spring mvc leaning
  17. Ogre学习教程:Ogre1.8.1+VS2010环境配置(转)
  18. Java学习--多态
  19. HDU 1715 大数java
  20. JQUERY几个操作action,随意记录

热门文章

  1. ios之清除cell缓存,解决cell的重用问题。
  2. matlab M文件分析工具使用(Code Analyzer and Profiler)
  3. MOTIONEVENT的GETX()和GETRAWX()和VIEW的GETLEFT()3个方法的区别
  4. Context.startActivity出现AndroidRuntimeException
  5. Python写入连接mysql失败
  6. js判断浏览器内核和版本(包括手机端设备)
  7. 【转】Android的root原理
  8. Mac在Finder中显示/usr、/tmp、/var等隐藏目录
  9. vmware的硬件选项里有关于虚拟化引擎的选项(虚拟机支持硬件虚拟化)
  10. MySQL升级后1728错误解决方案