笔者之前整理了CPU load过高产生的原因及排查
这次针对java进程方面考虑一下JVM调优的原因
JVM 究竟需不需要调优?
JVM 经过这么多年的发展和验证,整体是非常健壮的。个人认为99%的情况下,基本用不到 JVM 调优。
通常来说,我们的 JVM 参数配置大多还是会遵循 JVM 官方的建议,例如:
- -XX:NewRatio=2,年轻代:老年代=1:2
- -XX:SurvivorRatio=8,eden:survivor=8:1
- 堆内存设置为物理内存的3/4左右
- 等等
JVM 参数的默认(推荐)值都是经过 JVM 团队的反复测试和前人的充分验证得出的比较合理的值,因此通常来说是比较靠谱和通用的,一般不会出大问题。
当然,更重要的是,大部分的应用 QPS 都不到10,数据量不到几万,这种低压环境下,想让 JVM 出问题,说实话也挺难的。
大部分情况遇到的应该是自己的代码 bug 导致 OOM、CPU load高、GC频繁啥的,这些场景也基本都是代码修复即可,通常不需要动 JVM。
当然具体也有些场景需要JVM 调优的,笔者整理几个平时工作遇到的。
JVM 优化步骤?
1.分析和定位当前系统的瓶颈
对于JVM的核心指标,我们的关注点和常用工具如下&#x