美文网首页
Day15 JVM调优实战

Day15 JVM调优实战

作者: 小周爱吃瓜 | 来源:发表于2022-03-22 12:36 被阅读0次

JVM调优

主要调这几个指标,GC停顿时间,吞吐量,FullGC次数。

当我们发现线上出现频繁的gc的时候,不能直接用jmap dump内存快照,
因为jmap dump快照(dump下来得到快照会很大)的时候回造成卡顿。

我们可以让运维临时隔离这台服务器,然后再dump内存快照.

我们调优的原则是在用户可接收的停顿时间范围内,让更多的gc控制在young区域,不让更多的对象进入到老年代.

  • jstat -gc pid 1000 10 , 隔1秒执行一次gc观察,共10秒.

Fullgc造成的原因:

  1. 动态年龄判断机制进入老年代
  2. 触发了空间担保(s区问old区要空间,survivor)
  3. 大对象进入到老年代(我们可以设置老年代进入的比例)
  4. System.gc() 显式调用
  • 关于日志分析
    我们可以通过printgc log 获取到gc log日志,然后通过gc viewer查看吞吐量
Screen Shot 2022-03-22 at 12.02.45 PM.png

可以通过这个查看吞吐量,停顿时间,fullgc次数.

  • 提供实际案例。
  1. 并发促销情况,每秒3k qps,一个订单1kb大小.
    1000*30 = 30M左右,堆内存young:old = 1:2 ,算出young区大小,
    大约45/s左右,会触发gc, 不仅会发生younggc,也可能有old gc.

  2. 临时调整young old 区比例。
    增加机器?
    调整堆内存比例?

内存溢出 A B
reason: 内粗泄漏导致的溢出,大并发下导致的溢出 C C
mat, 验证码 cdn,模板,缓存,限流,tomcat调优或者替换成underrow,内存队列,mq削峰,jvm缓存,ngnx缓存,分布式锁,zk通知Nginx端活动结束,redis资源分段,tomcat参数调优,es参数调优,线程池合理传参数设置,集群部署
Screen Shot 2022-03-22 at 12.10.03 PM.png
  • 措施
  1. 首先要排除是否是代码问题,比如for循环中有lamder表达式.
    top命令查看等
  2. 加机器
  3. 临时调整堆分区比例(g1会adative分区比例,所以不需要设置比例大小),
    只需要设置堆空间大小.
  4. 选择合适的垃圾收集器

比如当下用的很多的G1.
CMS+Parrel GC.

50%以上的对象存活
对象分配和晋升的速度很快
8g(起码)以上的的内存
停顿时间在500ms以内的
  1. 临时调整gc发生的堆空间占比,默认是45%
  2. 不断的调整pausetime,在吞吐量,停顿时间,gc频率中取得相对满意的值,
    200 - 500 ms 时间大小之间做调整.

以上全是理论的

来看几个实际案例;

  • c++程序员重写了finalize方法
  • for 中lamder表达式(生成了.class对象),metaspace溢出风险
  • 内存泄漏导致的溢出,三方的工具类验证码工具类
  • 显示调用system.gc
  • redis 分布式锁未释放,占用的内存不断飙升

todo 🐴的案例

相关文章

  • Day15 JVM调优实战

    JVM调优 主要调这几个指标,GC停顿时间,吞吐量,FullGC次数。 当我们发现线上出现频繁的gc的时候,不能直...

  • JVM实战调优

    项目介绍 本项目是spring cloud zuul项目,程序内容就是做请求的签名加解密,然后对响应做加密。 项目...

  • JVM调优实战

    jvm可利用多大的内存空间 操作系统 32 位 : 2的32次方 = 4G - 操作系统一半空间= 2g--jvm...

  • JVM实战调优

    首先看自己能不能回答出这些问题。 垃圾回收算法 前六个是分代算法,G1是逻辑分代,物理不分代,ZGC是逻辑、物理都...

  • JVM 调优实战

    简书 许乐转载请注明原创出处,谢谢! 【案例】 最近我的同学遇到一个线上问题,线上机器的jvm进程频繁FullGC...

  • 谈谈性能调优思路

    声明:本文为学习总结篇,参考资料见文末,如有侵权请联系作者,调优实践总结篇可参考以往文章:JVM学习笔记与调优实战...

  • 3.JVM调优工具

    JVM调优工具 1、JVM调优工具-JDK工具 1.1 jps jps:Java Virtual Machine ...

  • JVM调优高频面试

    JVM调优目的 使用较小的内存占用来获得较高的吞吐量或者较低的延迟。 一、JVM内存调优 对JVM内存的系统级调优...

  • Spark(十八)JVM调优之原理概述以及降低cache操作的内

    一、调优背景 1、常规性能调优:分配资源、并行度。。。等 2、JVM调优(Java虚拟机):JVM相关的参数,通常...

  • 2019-10-12 jvm调优

    JVM调优总结

网友评论

      本文标题:Day15 JVM调优实战

      本文链接:https://www.haomeiwen.com/subject/zsqfjrtx.html