
性能优化与压测引擎
文章平均质量分 76
性能优化与压测引擎
王伟王胖胖
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DefNewGeneration收集器流程粗略解析二
DefNewGeneration收集器流程粗略解析二各种软,弱,虚等引用处理最后处理无晋升失败的情况有晋升失败的情况GC日志顺序GC前后的堆内存统计日志**GC**的原因以及信息处理引用耗时信息动态调整年龄阈值日志各种软,弱,虚等引用处理可以看到里面会处理这些引用,具体代码比较负复杂不看下去了:最后处理无晋升失败的情况如果前面的晋升,复制没有问题的话,也就是说把非垃圾的标记好了,复制到to区了,或者是晋升到老年代了,剩下的就是把eden和from清理掉,然后把from和to交换下,最后再动态计原创 2022-03-22 19:28:32 · 466 阅读 · 0 评论 -
DefNewGeneration收集器流程粗略解析一
DefNewGeneration收集器流程粗略解析一目的判断是否可以进行收集(collection_attempt_is_safe)处理GCROOT对象(GenCollectedHeap::gen_process_strong_roots)扫描GCROOT引用对象FastScanClosure::do_oop拷贝到幸存区处理DefNewGeneration::copy_to_survivor_space递归处理引用链递归标记引用FastEvacuateFollowersClosure::do_void目的原创 2022-03-22 19:27:51 · 558 阅读 · 0 评论 -
GC问题排查实战五-G1日志分析以及动态年龄调整机制
GC问题排查实战五-G1日志分析以及动态年龄调整机制G1分析参数跑完后数据gc日志数据safepoint相关数据动态年龄调整机制(ParNew做例子)hotspot相关源码jdk1.8-b26哪些收集器会用到这个机制这个机制在哪个阶段被使用年龄阈值在哪个阶段被使用总结G1分析这次我们用G1试试。参数-Xms8192M -Xmx8192M -Xmn4096M -Xss1M -XX:+UseG1GC -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC -原创 2022-03-19 20:39:40 · 1610 阅读 · 0 评论 -
GC问题排查实战四-cms日志分析
GC问题排查实战四cms分析参数跑完后的数据gc日志数据safepoint相关数据总结cms分析接着上篇,我们同样的例子,用cms试试。参数-Xms8192M -Xmx8192M -Xmn4096M -Xss1M -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC -XX:+PrintReferenceGC -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:Me原创 2022-03-19 20:38:52 · 480 阅读 · 0 评论 -
GC问题排查实战三-Parallel Scavenge和Parallel Old日志分析
GC问题排查实战三年轻代GC的耗时问题Parallel Scavenge和Parallel Old参数跑完后数据gc日志数据safepoint相关数据晋升问题年轻代GC的耗时问题本篇开始一些比较细节的东西,想看看年轻代垃圾收集到底耗时耗在哪里,以便于出现问题的时候有解决思路,本次会用相同的例子压测,然后分别用Parallel Scavenge和Parallel Old,CMS,G1来进行垃圾回收,分析年轻代的一些耗时问题。Parallel Scavenge和Parallel Old参数-Xms8原创 2022-03-19 20:37:36 · 732 阅读 · 0 评论 -
GC问题排查实战二
GC问题排查实战二JDK低版本的bug(GCLocker Initiated GC)的问题CMS的最终标记触发young gc的问题年轻代GC信息分析老年代GC情况分析年轻代分配和晋升情况分析CMS回收阶段统计分析垃圾生成分析内存泄露分析GC的原因总结JDK低版本的bug(GCLocker Initiated GC)的问题接着上篇,这个就很奇怪,前面刚经过一次young gc,怎么又来,而且年轻代没满,收集了一点点,于是只能百度了,然后发现这个bug,是低版本的,刚好我们用的是1.8.0_162,所以应原创 2022-03-06 15:41:20 · 2980 阅读 · 0 评论 -
GC问题排查实战一
GC问题排查实战一前言GC信息参数配置信息gceasy分析内存使用GC时间指标交互图信息GC之后的堆情况分析GC过程的持续时间分析GC暂停时间分析缺失的数据问题回收的容量分析前言最近在进行GC的相关调优和问题排查,进行了一个全用例的场景压测,可以抽象为5W用户连接,500QPS并发,然后持续大致24个小时。随后进行一些分析,并找出其中可能存在的问题,以及可以优化的方向。GC信息参数配置信息-Xms12G -Xmx12G -Xmn4G -XX:MetaspaceSize=300M -XX:Surv原创 2022-03-06 15:40:13 · 1029 阅读 · 0 评论 -
分布式压测系统详细介绍八:akka actor模型基本介绍
分布式压测系统详细介绍八:actor模型介绍actor模型优点存在的问题actor模型先上一张图,网上弄来的:一看好像是发送邮件,可以把这个模型看成发送邮件,而且有信箱,好像就是多人通信,一个actor就是一个人,actor之间相互通信,用的是邮件。平时都用过邮件的吧,邮件的特点是什么呢,就是异步非阻塞的优点,发送者可以不关心接受者什么时候收到,是否已经处理,他只管发送到他的邮箱咯,当然接受者也是,他不关心谁给他发的,他想处理邮件就从邮箱中拿出来处理,根据具体邮件内容来进行处理。优点异步非阻塞原创 2022-02-12 19:32:39 · 1012 阅读 · 0 评论 -
分布式压测系统详细介绍七:play framework介绍
分布式压测系统详细介绍六:play framework介绍play framework介绍小试牛刀特点play framework介绍压测系统的后端是用这个框架来做的,先看看这个是什么吧,直接看官网。构建web应用框架,可以是用java和scala,看到这里猜想为什么作者要用这个了,有scala的,gatling就是scala写的。然后看下他的特性,是不是跟springmvc有点像啊:具体有兴趣可以慢慢看他的文档了解下。小试牛刀idea中也有这个的,就是选scala的时候:scala版原创 2022-02-09 20:50:33 · 1073 阅读 · 0 评论 -
分布式压测系统详细介绍六:idea中启动
分布式压测系统详细介绍六:idea中启动idea配置idea配置前面说的都是命令行启动的,今天说下idea怎么配置,首先下载项目,本地安装好环境,然后idea的setting里有个sbt的设置,可以指定用哪里的sbt,以及一些参数:比如设置一些参数,指定用哪个仓库配置文件,以及相关的缓存存在哪里:-Dsbt.repository.config=D:/sbt/conf/repositories-Dsbt.boot.directory=D:/sbt/boot-Dsbt.ivy.home=D:/sb原创 2022-02-09 20:48:53 · 1597 阅读 · 0 评论 -
分布式压测系统详细介绍五:分布式演示
分布式压测系统详细介绍五分布式演示分布式演示前面的例子只演示了一台施压机,现在模拟分布式2台,其实也就是再开个进程,我们可以把项目复制到另一个目录,然后单独启动play,不启动ui,这个前面文章有说过了,怎么设置,命令:sbt "run -Dhttp.port=20010 -DPORT=20010 -DADDRESS=127.0.0.1 -DZK_IP=127.0.0.1 -DHOST=test20010 -DARTHAS_URL=http://127.0.0.1:40000/?port=40001"原创 2022-02-09 13:52:18 · 1674 阅读 · 0 评论 -
分布式压测系统详细介绍四:压测例子后台服务
分布式压测系统详细介绍四压测例子后台例子dubbo例子运行grpc例子运行http例子运行压测例子后台前面有说有些压测例子需要有后台,只有BaseHttp不需要,所以这回把其他4个例子补齐了。例子例子里面有3种协议,HTTP,DUBBO,GRPC,只是做了最简单的测试接口,具体就不多说了,直接上github地址https://github.com/wang860770/loadtest_example记得要把zookeeper启动,起来,因为dubbo要用直接可以用idea打开的,然后直接运行:原创 2022-02-08 23:52:35 · 355 阅读 · 0 评论 -
分布式压测系统详细介绍三:单独启动
启动ui检查下环境是否好了之后,此时可以去项目的ui文件夹下启动下,比如这个命令:ng serve --port 4300 --open --proxy-config src/proxy.conf.js --host 0.0.0.0 --disableHostCheck当然第一次可能遇到这个问题,就是依赖没装呢:用npm install或者直接yarn install安装依赖:此时应该会自动跳转到页面:看到下面的红色的报错是对,因为后台服务器没开呢:...原创 2022-02-08 22:27:16 · 574 阅读 · 0 评论 -
分布式压测系统详细介绍二:体验功能
分布式压测系统详细介绍二体验功能所有节点脚本编译在线编辑并同步节点开始压测实时数据压测报告arthas体验功能所有节点这里会去zookeeper获取所有注册的施压节点,点击所有节点,看到有即说明启动完成了,如果没出来,可以先等会儿,因为他是懒加载的。脚本编译这里就是进行脚本编译的,如果修改了压测相关脚本的话,都要进行编译,是在线的增量编译,很快的:编译完成后点上面的刷新按钮可以看到编译出来的场景脚本,第一个是访问外网的例子,可以直接跑,后面几个是需要自己的后台服务的,我也写好了例子,到时候上原创 2022-02-08 22:26:24 · 482 阅读 · 0 评论 -
分布式压测系统详细介绍一:环境搭建
分布式压测系统详细介绍一分布式压测系统大致架构项目安装启动安装node环境安装node安装Angular CLI安装zookeeper安装sbt启动项目安装arthas相关分布式压测系统大致架构我画了个大概的架构图:其实主要就是前后端,加上zookeeper做注册中心以及arthas做性能排查。前段用的是angularJS,后端是play framework,这个跟springmvc类似,也是个web框架,有兴趣可以看下官网。项目安装启动介绍完了基本的东西,应该先下来启动吧,眼见为实,当然需要一原创 2022-02-08 22:25:54 · 1050 阅读 · 0 评论 -
性能优化与压测引擎五:增强版分布式压测系统
性能优化与压测引擎五:增强版分布式压测系统增强版分布式压测系统Enhanced Pea主要增强点脚本文件模拟场景脚本文件脚本相关文件arthas的web端github地址增强版分布式压测系统Enhanced Pea前面介绍了分布式压测系统pea,其实已经很强大了,不知道有没小伙伴拿下来玩过,挺不错的,不过可能因为环境什么的有些问题,我下载下来运行的时候也出现了一些问题,然后进行了修复,又增加了一些内容,比如增加了直接在线编辑脚本,虽然比较low,但是基本功能有了,还比如我把arthas的web嵌入进去了原创 2022-02-08 22:17:44 · 371 阅读 · 0 评论 -
性能优化与压测引擎四:gatling和arthas实战
性能优化与压测引擎四gatling和arthas结合实战例子springboot接口例子控制器日志模拟gatling压测脚本开启arthas开启压测后观察问题分析解决方案总结gatling和arthas结合实战例子准备一个简单的例子,说明下工作中的一个简单的找问题和优化例子,虽然简单,但是很实用。springboot接口例子控制器@RestControllerpublic class HelloController { @Autowired private Logger log原创 2022-02-04 22:28:49 · 1099 阅读 · 0 评论 -
性能优化与压测引擎二:分布式压测引擎pea
性能优化与压测二分布式压测引擎pea分布式压测引擎pea前面介绍了gatling是铺垫,这个才厉害,这个作者把gatling框架封装了下,做了一个分布式的web压测系统,真的很不错,而且开源了,我也是在他的基础上加工的,所以还是要先介绍下这位大佬的这个引擎,github。...原创 2022-02-03 14:47:34 · 1016 阅读 · 0 评论 -
性能优化与压测引擎三:性能优化利器arthas
性能优化与压测引擎三性能优化利器arthas简单使用网页版Tunnel网页版性能优化利器arthas这个应该不陌生吧,阿里开源的,用于做性能优化和问题排查的,具体就不介绍了,可以看下这个学习文档很关键,基本所有问题都可用这个来解决,其实做性能检测的还有其他的一些工具,比如Jvisulvm,Jprofile,都是可视化的工具,可用看CPU,看GC,看堆内堆外等信息,特别是Jprofile的功能更强大,可用看mysql数据库没个链接的信息,以及每个sql的调用信息,有兴趣的可以学习下,Jprofile学习连原创 2022-02-03 16:18:25 · 1015 阅读 · 0 评论 -
性能优化与压测引擎一:压测框架gatling
性能优化与压测一压测框架gatling简单使用介绍压测框架gatling说到压测,我们最熟悉的可能就是ab命令和jmeter了,确实他们很方便,但是我最近都在用另外一个压测框架,叫gatling,为什么呢,因为他的报告很吸引我,而且写压测脚本很方便,功能也挺全的,他可以很好的去模拟一些场景,用的是scala语言,用到actor模型,很容易模拟大量并发的场景,并发真的很强,我觉得挺不错的,天生封装了http的协议,当然可以想办法实现GRPC或者DUBBO,网上其实有的,遗憾的可能就是需要用到scala,对原创 2022-02-03 14:25:27 · 2551 阅读 · 0 评论