性能测试-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=
注释:
class后面的名字会出现执行gatling后的可选列表里
① baseurl即域名
② 定义要读取的参数文件
③ 把指定读取参数文件定义的变量写进来
④ 这个名字会用在生成的报告里
⑤ 读取参数文件中的列
⑥设置每秒请求数qps和持续时间duringTime
啦啦啦,找到一个小抄,各种参数的含义解释,简直开挂,吓哭我了:
http://gatling.io/docs/current/cheat-sheet/
四 问题&解决
我第一次使用dev权限,该权限下java javac命令均可正确使用,但是执行失败,更改为root可行,觉得可能是gatling要求的。
最新文章
- varchar2_to_blob,应用向数据库更新LOB字段时的超时问题
- 【转载】MFC键盘响应
- BZOJ1196: [HNOI2006]公路修建问题
- 分类-Category
- compass sprite
- cxf所用的lib
- linux修改主机名-IP
- sql的集合运算
- 移动HTML 5前端性能优化指南(转载)
- Netty学习笔记(二)
- 博弈论进阶之Multi-SG
- jmeter基本使用
- Quartz入门及简单实现
- 【Graphite】使用dropwizard.metrics向Graphite中写入指标项数据
- luogu Eat the Trees
- spring mvc leaning
- Ogre学习教程:Ogre1.8.1+VS2010环境配置(转)
- Java学习--多态
- HDU 1715 大数java
- JQUERY几个操作action,随意记录
热门文章
- ios之清除cell缓存,解决cell的重用问题。
- matlab M文件分析工具使用(Code Analyzer and Profiler)
- MOTIONEVENT的GETX()和GETRAWX()和VIEW的GETLEFT()3个方法的区别
- Context.startActivity出现AndroidRuntimeException
- Python写入连接mysql失败
- js判断浏览器内核和版本(包括手机端设备)
- 【转】Android的root原理
- Mac在Finder中显示/usr、/tmp、/var等隐藏目录
- vmware的硬件选项里有关于虚拟化引擎的选项(虚拟机支持硬件虚拟化)
- MySQL升级后1728错误解决方案