在上一篇实战讲解了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实战(二)的更多相关文章

  1. coreseek实战(二):windows下mysql数据源部分配置说明

    coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...

  2. 【NFS项目实战二】NFS共享数据的时时同步推送备份

    [NFS项目实战二]NFS共享数据的时时同步推送备份 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品, ...

  3. chrome调试工具高级不完整使用指南(实战二)

    3.3 给页面添加测试脚本 在现实的工作中,我们往往会遇到一些问题在线上就会触发然后本地就触发不了的问题.或者是,要给某个元素写一个测试脚本.这个时候如果是浏览器有提供一个添加脚本的功能的话,那么我们 ...

  4. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  5. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

  6. Netty 仿QQ聊天室 (实战二)

    Netty 聊天器(百万级流量实战二):仿QQ客户端 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之15 [博客园 总入口 ] 源码IDEA工程获取链接:Java 聊天室 实战 源码 写在 ...

  7. kubernetes实战(二十八):Kubernetes一键式资源管理平台Ratel安装及使用

    1. Ratel是什么? Ratel是一个Kubernetes资源平台,基于管理Kubernetes的资源开发,可以管理Kubernetes的Deployment.DaemonSet.Stateful ...

  8. SpringSecurity权限管理系统实战—二、日志、接口文档等实现

    系列目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战 ...

  9. miniFTP项目实战二

    项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...

随机推荐

  1. 使用mysql设计一个全局订单生产计数器

    2018年8月10日08:53:50 一般生产订单号的方式 1,使用时期+随机数1+随机数2 缺点,有可能在并发的时候会出现重复,解决办法就是加唯一索引,在插入数据的做查询是否已经被使用 2,使用时间 ...

  2. Good Introduction of Kerberos and RADIUS

    1. RADIUS https://baike.baidu.com/item/RADIUS/3073981?fr=aladdin http://www.h3c.com/cn/d_201309/9220 ...

  3. pycharm 的 激活流程

    激活流程 一.通过Activation code 方式激活 注册码获取地址为:http://idea.lanyus.com/ 在idea或者pycharm的Activation code中输入 注册码 ...

  4. 关于javascript中的变量对象和活动对象

    https://segmentfault.com/a/1190000010339180 https://zhuanlan.zhihu.com/p/26011572 https://www.cnblog ...

  5. 前端开发-日常开发沉淀之git提交文件忽略

    .gitignore文件里添加需忽略的文件,或需要提交的文件 # Created by .ignore support plugin (hsz.mobi) ### VisualStudioCode t ...

  6. 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...

  7. 管理npm源命令

    nrm ls 查看源镜像 nrm add 自定义名称 源地址 nrm use 自定义名称

  8. [ionic3.x开发记录]ng-content使用

    在ionic开发公用组件的时候,我一直在想有没有angular有没有像vue一样的slot插槽.方便组件后期扩展. 然后去翻文档,发现有ng-content这么个东西,用法很像vue的slot. 组件 ...

  9. PPTPD 服务搭建

    查看系统发行版 uname -a 安装pptpd 服务 apt-get -y install ppp pptpd 配置 PPTPD 文件 vim /etc/pptpd.conf #去掉注释 local ...

  10. Maven项目无法找到mybatis的xml映射文件

    通常我们的xml映射文件会放在源码中,普通的java项目在编译时可以将src下的xml放到classes文件中. 但maven项目编译时是不会将xml放到classes文件中,从而导致我们的mybat ...