1.写在前面
前面已经分享了很多关于jvm的知识,具体的详情都可以查看上几篇的文章。
从jvm的调优原理,垃圾查找算法,垃圾回收算法,再到jvm调优工具,调优参数等。
需要掌握的jvm知识,已经是循序渐进,一步一步的深入学习。
那在掌握这些内容的时候,是不是有种想去实践的冲动呢?
好了,今天我们就来进行一次jvm调优实践之旅吧!!!
主要从以下几个方面进行展开描述:
- JVM实践调优主要步骤
- 分析GC日志
- 堆内存与元空间优化
- 线程堆栈优化
- 堆内存内部优化:新生代和老年代比例
- 垃圾回收器优化
2.JVM调优实践
2.1 JVM实践调优主要步骤
默认的策略是最普用,但不是最佳的。
-
第一步:监控分析GC日志
-
第二步:判断JVM问题:
- 如果各项参数设置合理,系统没有超时日志出现,GC频率不高,GC耗时不高,那么没有必要进行GC优化
- 如果GC时间超过1-3秒,或者频繁GC,则必须优化。
-
第三步:确定调优目标
-
第四步:调整参数
- 调优一般是从满足程序的内存使用需求开始,之后是时间延迟要求,最后才是吞吐量要求,要基于这个步骤来不断优化,每一个步骤都是进行下一步的基础,不可逆行之。
-
第五步:对比调优前后差距
-
第六步:重复: 1 、 2 、 3 、 4 、 5 步骤
- 找到最佳JVM参数设置
-
第七步:应用JVM到应用服务器:
- 找到最合适的参数,将这些参数应用到所有服务器,并进行后续跟踪。
以上,就是我们进行jvm调优得一些步骤了。
那我们就从第一步开始喽!!!^_^
2.2 分析GC日志
2.2.1 初始参数设置
机器环境:
指标 | 参数 |
---|---|
机器 | CPU 12核,内存16GB |
集群规模 | 单机 |
seqb_web版本 | 1.0 |
数据库 | 4核 16G |
Jvm调优典型参数设置;
- -Xms堆内存的最小值:
- 默认情况下,当堆中可用内存小于40%时,堆内存会开始增加,一直增加到-Xmx的大小。
- -Xmx堆内存的最大值: 默认值是总内存/64(且小于1G)
- 默认情况下,