性能优化与压测引擎一:压测框架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. 两种常见的点云配准方法ICPNDT
  2. 也许,这样理解 HTTPS 更容易!
  3. 用python画xy散点图-python画时间序列散点图
  4. 搞测量的要时刻保护自己哦!
  5. 30 个 Redis 基础知识
  6. 树莓派VNC server设置开机自启动
  7. LeetCode 1785. 构成特定和需要添加的最少元素(贪心)
  8. Java文档阅读笔记-C3P0连接池的使用
  9. linux 升级 git版本,CentOS下升级Git1.7.1升级到Git2.2.1
  10. R语言 | 构建信用评分卡模型
  11. .NET程序不需要受SVN版本控制的文件类型
  12. C程序设计案例(矩形法求定积分问题)
  13. unity2018关联不到vs_vs2015与unity2018兼容性问题
  14. JavaScript 每日一题 #11
  15. 开源图像数据集管理工具fiftyone使用
  16. C基础(三)函数的使用
  17. 离散数学第二版计算机系,离散数学 第2版
  18. linux,Windows11双系统安装及开机引导
  19. 【Android初级】什么是ANR?如何防止?如何修复?
  20. 使用JSON数据格式模拟股票实时信息

热门文章

  1. 鸿蒙二代好用吗,鸿蒙2.0使用体验_鸿蒙2.0使用感受
  2. 开发一款好用的基金助手
  3. 利用JavaScript和动画来实现图片的融合和分开的一个效果
  4. Pycharm专业版详细安装教程
  5. 视频美颜sdk是什么?技术解析与实现原理详解
  6. java支付宝wap支付_SpringBoot 支付宝H5Wap沙盒环境手机网站支付
  7. 微信二次开发接入php代码,适合新手学习的laravel接入微信接口,实现微信公众号二次开发...
  8. C语言文件:从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“!”为止。
  9. 《区块链国产化实践指南——基于Fabric 2.0》
  10. 目标检测算法——3D公共数据集汇总(附下载链接)