记一次线上gc调优的过程】的更多相关文章

       近期公司运营同学经常表示线上我们一个后台管理系统运行特别慢,而且经常出现504超时的情况.对于这种情况我们本能的认为可能是代码有性能问题,可能有死循环或者是数据库调用次数过多导致接口运行过慢.应领导要求,我们将主站中进行性能测试的框架代码(见我前面一篇博文记录一次通过性能日志处理线上性能问题的过程)添加到了该后台管理系统中.上线运行一段时间后,查看相关日志可以看到如下分析日志:        通过该日志可以发现,dao方法一直获取不到数据库链接池,但是根据实际情况考虑应该不大可能,…
今天第二篇采坑了... ... 现场因为处理太急促没有保留,而且是一旁协助,没有收集到所有信息实在是有些遗憾...只能靠记忆回想一些细节 情况是一台服务器一启动就开始full gc,短短1分钟可以有几十次的full gc. 主要几个配置参数为-Xmx2g -XX:NewRatio=3(CMS相关和其他的和这次无关不列了) 很简单的参数. 下意识dump了heap,结果并没什么特别明显的问题. 在想是不是内存不够,加到3g还是一样的问题. 那似乎只能看是不是业务代码有内存泄漏了. 用jmap -h…
过去也有对JAVA性能调优的分析,有过以下case: 1. JVM outOfMemory, 主要是使用jmap dump 出来 hprof,使用MAT进行分析 2. JVM outOfMemory, 使用jmap dump 出来hprof, 使用jhat 找出异常内存对象 3. JVM调优,程序运行1个月后崩溃 4. JVM调优,根据JFR 采样,分析性能消耗在哪里,如何优化高频的性能消耗. 等等其他(如 多线程竞争锁导致的性能下降等). 这次的case 比较有意思,所以记录下来. 先描述本次…
文章说明 这篇文章主要是记录自己最近在真实工作中遇到的慢查询的案例,然后进行调优分析的过程,欢迎大家一起讨论调优经验.(以下出现的表名,列名都是化名,实际数据也进行过一点微调.) PS:最近做了一个面试题精选精答的开源项目,如果想要了解更多MySQL相关的技术总结,可以看一看,如果对大家有帮助,希望大家帮忙给一个star,谢谢大家了! <面试指北>项目地址:https://github.com/NotFound9/interviewGuide 一.复杂的深分页问题优化 背景 有一个articl…
现状: k8s 的一个pod 有32G内存,每秒产生新对象的峰值在900Mb ---- 1900Mb(根据jstat计算Eden区获得) . 修改之前的参数 就一个命令行参数是-Xmx31g; 我修改为: -Xms:30g -Xmx:30g -Xmn:15g -XX:SurvivorRatio=6 以上目的是为了减少年轻代GC频率(由6秒1次 增加到10+秒一次),让Queue队列中的大对象在to区停留的更长.同时,由于队列的大对象紧到不死,通常存活的对象空间就>to区(s0.s1)空间,被移到…
版权声明:本文为横云断岭原创文章,未经博主同意不得转载.微信公众号:横云断岭的专栏 https://blog.csdn.net/hengyunabc/article/details/24924843 缘起 线上有Tomcat升级到7.0.52版,然后有应用的JVM FullGC变频繁.在高峰期socket连接数,Cpu使用率都暴增. 思路 思路是Tomcat本身的代码应该是没有问题的.有问题的可能是应用代码升级,或者环境改变了.总之Tomcat的优先级排在最后. 先把应用的heap dump下来…
缘起 线上有Tomcat升级到7.0.52版,然后有应用的JVM FullGC变频繁,在高峰期socket连接数,Cpu使用率都暴增. 思路 思路是Tomcat本身的代码应该是没有问题的,有问题的可能是应用代码升级,或者环境改变了,总之Tomcat的优先级排在最后. 先把应用的heap dump下来分析下: jmap -dump:format=b,file=path pid 用IBM的Heap Analyser分析,发现dubbo rpc调用的RpcInvocation对象和taglibs的Si…
解Bug之路-记一次线上请求偶尔变慢的排查 前言 最近解决了个比较棘手的问题,由于排查过程挺有意思,于是就以此为素材写出了本篇文章. Bug现场 这是一个偶发的性能问题.在每天几百万比交易请求中,平均耗时大约为300ms,但总有那么100多笔会超过1s,让我们业务耗时监控的99.99线变得很尴尬.如下图所示: 为了精益求精,更为了消除这个尴尬的指标,笔者开始探寻起这100多慢请求笔的原因. 先找一笔看看 由于笔者写的框架预留了traceId,所以找到这笔请求的整个调用的链路还是非常简单的. 而且…
本篇是”GC专家系列“的第三篇.在第一篇理解Java垃圾回收中我们学习了几种不同的GC算法的处理过程,GC的工作方式,新生代与老年代的区别.所以,你应该已经了解了JDK 7中的5种GC类型,以及每种GC对性能的影响. 在第二篇Java垃圾回收的监控中介绍了在真实场景中JVM是如何运行GC,如何监控GC数据以及有哪些工具可用来方便进行GC监控. 在本篇中,我将基于真实的案例来介绍一些GC调优的最佳选项.写本篇文章时,我假设你已经理解了前两篇的内容.为了深入理解本部分内容,你最好先浏览一下前两篇的内…
GC调优(Tuning Garbage Collection)和其他性能调优是同样的原理.初学者可能会被 200 多个 GC参数弄得一头雾水, 然后随便调整几个来试试结果,又或者修改几行代码来测试.其实只要参照下面的步骤,就能保证你的调优方向正确: 列出性能调优指标(State your performance goals) 执行测试(Run tests) 检查结果(Measure the results) 与目标进行对比(Compare the results with the goals)…