万能解决方案
- 模拟 JVM 问题的时候,遇到了一个问题脑壳痛
- 放着没有处理。
- 然后按流程分析,从日志开始分析原因是什么。
- 找到了问题原因。
- 结果:愿意动手,并且相信自己能做到、做好,就这么简单。
步骤
- 模拟一个 JVM 垃圾回收情况
- 执行 JVM 日志
- 日志分析
- 为什么会 FGC 呢?
- 1000ms 打印一次,数据不够齐全,再用 100ms 打印一次。
- 思考
模拟一个 JVM 垃圾回收情况
- 查看日志:jstat -gc PID 间隔时间 次数
执行 JVM 日志
[root@localhost jvm]# jstat -gc PID 1000
S01M S11M S0128K S1128k eden8M Eden2M 老10M 老6M 元4M 元3M Young Full
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 42 0.026 44 0.046 0.073
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 44 0.028 46 0.048 0.076
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 46 0.029 48 0.050 0.079
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 48 0.030 50 0.053 0.083
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 50 0.031 52 0.055 0.086
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 52 0.032 54 0.056 0.088
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 54 0.033 56 0.058 0.091
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 56 0.034 58 0.060 0.094
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 58 0.035 60 0.062 0.097
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 60 0.037 62 0.064 0.101
日志分析
- Eden 使用一直是 2M 很稳定
- Survivor 分区一直是 128k 很稳定
- 元数据区一直是 3M 很稳定
- YGC 和 FGC 次数同步增长
- 很明显,是不断的在 FGC 然后带动的 YGC
为什么会 FGC 呢?
- 资料不足,想不通,要更加详细的日志
1000ms 打印一次,数据不够齐全,再用 100ms 打印一次。
[root@localhost jvm]# jstat -gc PID 100 50
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 88 0.058 90 0.088 0.147
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 88 0.058 90 0.088 0.147
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 88 0.058 90 0.088 0.147
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 88 0.058 90 0.088 0.147
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 88 0.058 90 0.088 0.147
1024.0 1024.0 128.0 0.0 8192.0 0.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 90 0.060 92 0.090 0.150
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 92 0.061 94 0.093 0.153
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 94 0.062 96 0.094 0.155
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 0.0 128.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 96 0.063 98 0.096 0.159
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 98 0.064 100 0.098 0.162
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 98 0.064 100 0.098 0.162
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 98 0.064 100 0.098 0.162
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 98 0.064 100 0.098 0.162
1024.0 1024.0 128.0 0.0 8192.0 2048.0 10240.0 6434.0 4864.0 2903.2 512.0 313.2 98 0.064 100 0.098 0.162
思考
- 这个日志还是看不懂
- 哦,打包错了,用的其他的代码,所以日志打印内容不一样。
- 重点:预期结果不一样的时候,从头到尾,从尾到头。