性能优化与压测引擎一:压测框架gatling

  • 压测框架gatling
    • 简单使用介绍

压测框架gatling

说到压测,我们最熟悉的可能就是ab命令和jmeter了,确实他们很方便,但是我最近都在用另外一个压测框架,叫gatling,为什么呢,因为他的报告很吸引我,而且写压测脚本很方便,功能也挺全的,他可以很好的去模拟一些场景,用的是scala语言,用到actor模型,很容易模拟大量并发的场景,并发真的很强,我觉得挺不错的,天生封装了http的协议,当然可以想办法实现GRPC或者DUBBO,网上其实有的,遗憾的可能就是需要用到scala,对于纯JAVA的可能不是那么友好把,不过仅仅是用压测那些脚本逻辑问题应该不大。这里我用他自带的demo说明下好了,为了给后面做铺垫,官网是https://gatling.io/,有兴趣的可以下个最新版玩玩,很方便,看看结果,也有大佬做的比较,有兴趣可以看看Gatling与Jmeter的比对。

简单使用介绍

下载完直接解压打开,去bin目录下:

然后在目录中打开cmd,输入gatling,他会启动,然后让你选择要模拟的脚本,有编号的,比如我输入了0,之后就等他跑,跑的时候会有信息:

就可以看到他会显示出请求名字,然后是成功和失败数目:

最终跑完后会生成报告:

报告在results目录内:

进去打开index.html

报告页面:

可以看到这里有所有的接口的信息,包括总共调用多少次,成功和失败的比率,QPS,最大最小耗时,然后百分比区间耗时等,很全,而且你还可以点进去看详细的:


然后下面还有一些用户注入,响应时间,请求频率等信息:

然后我们来看下这个压测脚本,居然是java的(3.7.x好像有javaapi,以前都是scala的),当然也可以用scala,其实内部核心是akka,用scala写的,都可以转换为字节码,在jvm上跑的,可以互相调用,也方便的,就是用scala不习惯:

看下脚本,其实很简单,就是跟普通写http请求差不多,只是这里需要创建场景,给用户并发这种,这个是框架自带的,可以直接用


package computerdatabase;import static io.gatling.javaapi.core.CoreDsl.*;
import static io.gatling.javaapi.http.HttpDsl.*;import io.gatling.javaapi.core.*;
import io.gatling.javaapi.http.*;
import java.time.Duration;public class BasicSimulation extends Simulation {//创建议信息HttpProtocolBuilder httpProtocol =http// Here is the root for all relative URLs.baseUrl("http://computer-database.gatling.io")// Here are the common headers.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8").doNotTrackHeader("1").acceptLanguageHeader("en-US,en;q=0.5").acceptEncodingHeader("gzip, deflate").userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0");// 创建场景ScenarioBuilder scn =scenario("Scenario Name").exec(http("request_1").get("/")) //get请求// Note that Gatling has recorded real time pauses.pause(7)//暂停多久.exec(http("request_2").get("/computers?f=macbook")).pause(2).exec(http("request_3").get("/computers/6")).pause(3).exec(http("request_4").get("/")).pause(2).exec(http("request_5").get("/computers?p=1")).pause(Duration.ofMillis(670)).exec(http("request_6").get("/computers?p=2")).pause(Duration.ofMillis(629)).exec(http("request_7").get("/computers?p=3")).pause(Duration.ofMillis(734)).exec(http("request_8").get("/computers?p=4")).pause(5).exec(http("request_9").get("/computers/new")).pause(1).exec(http("request_10")// Here's an example of a POST request.post("/computers") //post请求,然后传一些form参数// Note the triple double quotes: used in Scala for protecting a whole chain of// characters (no need for backslash).formParam("name", "Beautiful Computer").formParam("introduced", "2012-05-30").formParam("discontinued", "").formParam("company", "37"));{//注入用户,刚开始就一个,协议是httpsetUp(scn.injectOpen(atOnceUsers(1)).protocols(httpProtocol));}
}

好了,最基本的介绍完了,这个只是命令行的,当然还有直接idea里跑的,这个网上可以找,很多资料,其实还有很多有意思的内容,可以看官网,或者看这些大佬的文章:
https://blog.csdn.net/qq_39261142/category_9622000.html
https://blog.csdn.net/o_oomg/category_9688662.html

好了,就这个就介绍到这里,这个很有意思,但是只是命令行的版本,后面我站在巨人们的肩膀上,整了一个web版本的压测系统,有些东西涉及到公司的东西,所以可能要精简下,然后可能会开源发布下,毕竟大多内容都也是开源框架里整来的,我只是最了点加工,所以还是得贡献出去,给更多有兴趣的人使用。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。

性能优化与压测引擎一:压测框架gatling相关推荐

  1. Unity移动端游戏性能优化简谱之 以引擎模块为划分的CPU耗时调优

    <Unity移动端游戏性能优化简谱>从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能 ...

  2. iOS tableView性能优化之异步排版和绘制渲染----YYText框架学习(YYTextAsyncLayer)

    YYWebImage源码分析 YYImage源码 YYModel源码解析 前言 这段时间针对设计架构,解耦以及性能优化相关的知识点看了不少,前两者可以看MVVM和AOP编程思路,最后一个是昨天看的,Y ...

  3. mysql性能优化学习笔记-存储引擎

    mysql体系架构 客户端(java.php.python等) mysql服务层(连接管理器.查询解析器.查询优化器.查询缓存) mysql存储引擎(innodb.myisam等) 存储引擎针对表而言 ...

  4. 关于Android性能优化的几点建议,通用流行框架大全

    前言 2020年,互联网裁员潮下,我度过了人生中最清晰的半年. 今年我本命年,熬过了程序员35的坎,却在36岁被公司破产来了当头一棒,领完了当月份的工资,老板,也是我哥们的老李走进我的办公室,没有迂回 ...

  5. 性能优化与压测引擎二:分布式压测引擎pea

    性能优化与压测引擎二:分布式压测引擎pea 分布式压测引擎pea 基本介绍 视频演示 创建任务 任务执行中的节点状态 整体报告 单个请求细节报告 分布式压测引擎pea 前面介绍了gatling是铺垫, ...

  6. 前端性能优化方法与实战05 指标采集:白屏、卡顿、网络环境指标采集方法

    上一讲我们介绍了首屏时间的指标采集,这一讲我们来聊聊前端其他的性能指标采集,比如白屏.卡顿和网络环境. 你乘火车.地铁.飞机都走过安检吧?如果说首屏时间类似你过安检的时刻,那么,白屏时间就是你排队到安 ...

  7. 【Web技术】985- 当聊到前端性能优化时,我们会关注什么?

    大前端  前端知识宝库  坚持日更 关于这期分享内容 性能优化一直是前端领域老生常谈的问题,系统的性能以及稳定性很大程度上决定着产品的用户体验以及产品所能达到的高度.而tob和toc系统又有着不同的业 ...

  8. mysql笔记(锁、事务、性能优化、压测结果)

    Mysql 该笔记,主要根据kkb课程并结合网上资料和自己的理解而形成. 一.Mysql架构 1.1 逻辑架构 这是从网上copy过来的图.网上一些教程会把mysql也进行分层. 连接层:Connec ...

  9. 蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点

    陈显铭(山丘) 读完需要 6 分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高 ...

最新文章

  1. Too Many Segments CF595D 贪心乱搞
  2. android跨域 元素,Android之app作为服务器解决跨域问题
  3. OSPF常见错误和排错方法
  4. python super 变参数问题(六)
  5. struts2被淘汰的原因
  6. 日历对象导哪个包_微信新表情瞬间炸裂,文物表情包永恒萌呆!
  7. epoll nio区别_大厂面试系列(二)::NIO和Netty
  8. 八款JS框架介绍及比较
  9. 特斯拉下一代Roadster跑车生产时间再度推迟至2023年
  10. c语言中递增递减运算符,递增++和递减-C ++中的运算符
  11. 微信小程序引入外部字体后编译包过大的问题解决
  12. oracle插入新字段脚本
  13. 微信小程序-tab标签栏实现教程
  14. spoon mysql_spoon(kettle)基本配置(连接Mysql和Oracle)
  15. _GLIBCXX_USE_CXX11_ABI 定义不一致带来的宕机问题
  16. linux内核态文件操作filp_open/filp_close/vfs_read/vfs_write
  17. 给了一串数字:218916754,根据下面规则可以找出扣扣号码:首先删除第一个数,紧接着将第二个数放到这串数字的末尾,再将第三个数删除,并将第四个数放到这串数字的末尾......如此循环,知道剩下最后
  18. git pull时遇到的问题
  19. 安卓应用设置第一个显示的界面
  20. Openwrt无线管理工具/命令

热门文章

  1. Sqli_lib Less 5
  2. 潜流笔记-汇率动荡,劫难为何而来?
  3. OGRE CEGUI LAYOUT
  4. 数字水印技术:LSB加密详解(附python代码)
  5. ipone低版本页面不渲染问题
  6. CleanMyMacX VS 腾讯柠檬,mac清理谁更谁更优秀?一次全面的对比评测
  7. vmware虚拟机安装win7_虚拟机:VMware虚拟机安装使用及系统安装教程
  8. 腾讯音乐娱乐集团2023校园招聘技术类岗位编程题合集
  9. 关于熵增的一点个人看法
  10. 爬虫中的post请求