在上一篇实战讲解了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. vue学习目录 vue初识 this指向问题 vue组件传值 过滤器 钩子函数 路由 全家桶 脚手架 vuecli element-ui axios bus

    vue学习目录 vue学习目录 Vue学习一之vue初识 Vue学习二之vue结合项目简单使用.this指向问题 Vue学习三之vue组件 Vue学习四之过滤器.钩子函数.路由.全家桶等 Vue学习之 ...

  2. 与PON相关的abbreviation

    AAL:Asynchronous transfer mode Adaptation Layer 异步传输适配层 ACS:Autoconfiguration Server 自动配置服务 ADSL:Asy ...

  3. KeepAlive安装指南

    https://blog.csdn.net/yelllowcong/article/details/78764780

  4. 使用re开发python计算器

    #!/usr/bin/env python import reimport functools def minus_operator_handler(formula): '''处理一些特殊的减号运算' ...

  5. Zookeeper节点增删改查与集群搭建(笔记)

    1.上传文件目录说明 上传的文件一般放在 /home/下 安装文件一般在 /usr/local/下 2. 安装zookeeper 2.1将zookeeper-3.4.11.tar.gz拷贝到/home ...

  6. webpack入门操作教程

    1. webpack介绍 在传统的项目中,一个html文件可能会加载多个js.css文件,如果多人协同开发的话,就会出现全局变量被污染.文件直接的依赖问题 而webpack打包工具,会先分析入口文件的 ...

  7. 2018-2019-2 20165236 《网络对抗技术》Exp4 恶意代码分析

    2018-2019-2 20165236 <网络对抗技术>Exp4 恶意代码分析 一.1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行; 1.2是分析一个恶意软件, ...

  8. iOS MJExtension的使用

    前言: MJExtension是iOS的字典装模型的一个第三方框架.相对于JSONKit和SBJson相比MJExtension更简单易用.功能更强大. 安装: 使用CocoaPods导入(Cocoa ...

  9. C++ 自定义订单号

    自定义订单号 #include<iostream> #include<stack> #include <time.h> #include <sys/timeb ...

  10. 安装mongodb服务

    摘要:https://www.cnblogs.com/z-x-y/p/9305635.html 欢迎转载,转载请标明出处:https://www.cnblogs.com/z-x-y/p/9305635 ...