在上一篇实战讲解了Gatling的用例,不过还没涉及到性能方面的内容,其实用例中的最后一句就和性能有关了
setUp(scn.inject(atOnceUsers(1)).protocols(httpConf))
这样写更好理解一些
setUp(————表示本用例的压力设置
scn.inject(————表示对用例中哪个场景进行压力设置,如果你定义了两个场景,例如官网例子的val users = scenario("Users")和val admins = scenario("Admins"),那么你需要分别对两个场景的压力进行设置
atOnceUsers(1)————核心,具体的压力设置,下面有各种设置的使用说明
).protocols(httpConf)————表示要测试的数据定义,就是你在用例开始时定义var httpConf
)
Gatling提供了多种压力设置的方法,如下所示
setUp(
scn.inject(
nothingFor(4 seconds), // 1
atOnceUsers(10), // 2
rampUsers(10) over(5 seconds), // 3
constantUsersPerSec(20) during(15 seconds), // 4
constantUsersPerSec(20) during(15 seconds) randomized, // 5
rampUsersPerSec(10) to(20) during(10 minutes), // 6
rampUsersPerSec(10) to(20) during(10 minutes) randomized, // 7
splitUsers(1000) into(rampUsers(10) over(10 seconds)) separatedBy(10 seconds), // 8
splitUsers(1000) into(rampUsers(10) over(10 seconds)) separatedBy(atOnceUsers(30)), // 9
heavisideUsers(1000) over(20 seconds) // 10
).protocols(httpConf)
)
下面具体说说每种压力设置后的实际效果
1、nothingFor(duration): 在指定的时间段(duration)内什么都不干
实例:nothingFor(4 seconds)或者nothingFor(1 minutes),(注,下方每种可以设置时间的地方都可以根据实际需要用seconds或者minutes来限制)
实际效果:真的是什么都不干。。。设置之后一直循环sleep,不知道有啥用,估计用于下方的组合压力设置的吧
2、atOnceUsers(nbUsers): 一次模拟的用户数量(nbUsers)。
实例:atOnceUsers(10)
实际效果:运行后即时同时10个数据包,如图
3、rampUsers(nbUsers) over(duration): 在指定的时间段(duration)内逐渐增加用户数到指定的数量(nbUsers)。
实例:rampUsers(10) over(5 seconds)
实际效果:运行后从1开始逐渐增加每秒并发,直到发了10个包,如图,注意图中时间
4、constantUsersPerSec(rate) during(duration): 以固定的速度模拟用户,指定每秒模拟的用户数(rate),指定模拟测试时间长度(duration)。
实例:constantUsersPerSec(10) during(10 seconds)
实际效果:运行后每秒并发为10,直到运行了10秒钟,如图,这个用来做稳定性测试不错
5、constantUsersPerSec(rate) during(duration) randomized: 以固定的速度模拟用户,指定每秒模拟的用户数(rate),指定模拟时间段(duration)。用户数将在随机被随机模拟(毫秒级别)。数量太少时和上面的效果差不多
实例:constantUsersPerSec(10) during(10 seconds) randomized
实际效果:运行后每秒并发为10左右,直到运行了10秒钟
6、rampUsersPerSec(rate1) to (rate2) during(duration): 在指定的时间(duration)内,使每秒模拟的用户从数量1(rate1)逐渐增加到数量2(rate2),速度匀速。
实例:rampUsersPerSec(10) to(20) during(10 minutes)
实际效果:运行后每秒并发为10,然后匀速增加每秒并发,10分钟后,并发变为20,然后结束
7、rampUsersPerSec(rate1) to (rate2) during(duration) randomized: 在指定的时间(duration)内,使每秒模拟的用户从数量1(rate1)增加到数量2(rate2),速度随机。
实例:rampUsersPerSec(10) to(20) during(10 minutes) randomized
实际效果:运行后每秒并发为10,然后随机增加并发,10分钟后,并发变为20,然后测试结束
8、splitUsers(nbUsers) into(injectionStep) separatedBy(duration): 反复执行所定义的模拟步骤(injectionStep),每次暂停指定的时间(duration),直到总数达到指定的数量(nbUsers)
实例:splitUsers(1000) into(rampUsers(10) over(10 seconds)) separatedBy(10 seconds)
实际效果:反复执行rampUsers(10) over(10 seconds),每次执行间隔10秒,发了1000个包后,测试结束
9、splitUsers(nbUsers) into(injectionStep1) separatedBy(injectionStep2):反复依次执行所定义的模拟步骤1(injectionStep1)和模拟步骤2(injectionStep2),直到总数达到指定的数量(nbUsers)左右,因为如果设置不好不一定能到达总数,见下方说明。
实例:splitUsers(100) into(rampUsers(10) over(10 seconds)) separatedBy(atOnceUsers(30))
实际效果:先执行rampUsers(10) over(10 seconds),再执行atOnceUsers(30),反复如此,理论上直到发了100个包后,测试结束,这个例子不行,因为10-30-10-30-10这样循环后就已经90个包了,如果再执行下一个atOnceUsers(30)就超出了,所以发到90的时候测试结束
10、heavisideUsers(nbUsers) over(duration): 在指定的时间(duration)内使用类似单位阶跃函数的方法逐渐增加模拟并发的用户,直到总数达到指定的数量(nbUsers).简单说就是每秒并发用户数递增。
实例:heavisideUsers(1000) over(20 seconds)
实际效果:在20秒内增加并发数,直到发了1000个包左右,测试结束,至于是不是用了单位阶跃函数我就没有细究了,部分抓包结果如图
Gatling实战(二)的更多相关文章
-
coreseek实战(二):windows下mysql数据源部分配置说明
coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...
-
【NFS项目实战二】NFS共享数据的时时同步推送备份
[NFS项目实战二]NFS共享数据的时时同步推送备份 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品, ...
-
chrome调试工具高级不完整使用指南(实战二)
3.3 给页面添加测试脚本 在现实的工作中,我们往往会遇到一些问题在线上就会触发然后本地就触发不了的问题.或者是,要给某个元素写一个测试脚本.这个时候如果是浏览器有提供一个添加脚本的功能的话,那么我们 ...
-
Python爬虫实战二之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
-
转 Python爬虫实战二之爬取百度贴吧帖子
静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...
-
Netty 仿QQ聊天室 (实战二)
Netty 聊天器(百万级流量实战二):仿QQ客户端 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之15 [博客园 总入口 ] 源码IDEA工程获取链接:Java 聊天室 实战 源码 写在 ...
-
kubernetes实战(二十八):Kubernetes一键式资源管理平台Ratel安装及使用
1. Ratel是什么? Ratel是一个Kubernetes资源平台,基于管理Kubernetes的资源开发,可以管理Kubernetes的Deployment.DaemonSet.Stateful ...
-
SpringSecurity权限管理系统实战—二、日志、接口文档等实现
系列目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战 ...
-
miniFTP项目实战二
项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...
随机推荐
-
Matlab代码备忘
1.Matlab写入文件 set(hp1,'xdata',bbb(1,:),'ydata',bbb(2,:),'zdata',bbb(3,:)); M=size(bbb,2); name=strca ...
-
SVN分支的合并和同步
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并 ...
-
(转)[转]大数据时代的 9 大Key-Value存储数据库
在过去的十年中,计算世界已经改变.现在不仅在大公司,甚至一些小公司也积累了TB量级的数据.各种规模的组织开始有了处理大数据的需求,而目前关系型数据库在可缩放方面几乎已经达到极限. 一个解决方案是使用键 ...
-
AdminLTE
AdminLTE搭建前端 0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp ...
-
Qt(QML)本地化
Internationalization and Localization with Qt Quick 程序国际化 1) Use qsTr() for all Literial UI strings ...
-
FFT \ NTT总结(多项式的构造方法)
前言.FFT NTT 算法 网上有很多,这里不再赘述. 模板见我的代码库: FFT:戳我 NTT:戳我 正经向:FFT题目解题思路 \(FFT\)这个玩意不可能直接裸考的..... 其实一般\(FF ...
-
ORM对象关系映射之GreenDAO自定义属性转换器PropertyConverter
在使用GreenDAO定义实体的属性时候,通常来说定义的实体属性名就是对应的表的字段名.实体中属性的类型(如Long.String等)就是表的字段名类型,但是我们难免会有不一样的需求,比如实体中我定义 ...
-
c语言之sizeof的细节
关于sizeof,我们知道sizeof并不是一个函数,尽管通常我们会用sizeof()用法(这是c语言的坑),在此关于sizeof的一些关键不被认知的进行一下总结: # include "i ...
-
python面向对象编程练习
练习题 1.面向对象三大特性,各有什么用处,说说你的理解. 面向对象的三大特性: 1.继承:解决代码的复用性问题 2.封装:对数据属性严格控制,隔离复杂度 3.多态性:增加程序的灵活性与可扩展性 2. ...
-
用老毛桃U盘安装:[3]Ghost版Win7系统
用老毛桃自动安装Ghost版Win7的步骤: 1,到网上先下载Ghost版Win7映像文件到硬盘,我放到的是U盘,盘符为Z,如果你愿意,可直接放到硬盘即可,放到硬盘安装速度会快一点. 2,把制作好的老 ...