JVM调优

1. 解决问题

内存溢出(OOM、OutOfMemeory)、CPU飙高、GC频繁等JVM问题的排查、定位,以及调优。

2. 调优步骤

image.png

3. 监控发现问题

监控工具例如Prometheus+Grafana,监控的问题包括:
GC频繁
CPU负载过高
OOM
内存泄露
死锁
程序响应时间较长

4. 工具定位问题

使用分析工具定位oom、内存泄漏等问题。

4.1 调优依据

JVM调优时,吞吐量和停顿时长无法兼顾,吞吐量提高的代价是停顿时间拉长。

所以,如果应用程序跟用户基本不交互,就优先提升吞吐量。如果应用程序和用户频繁交互,就优先缩短停顿时间。

4.2 JDK自带的命令行调优工具

jps:查看正在运行的 Java 进程。jps -v查看进程启动时的JVM参数;

jstat:查看指定进程的 JVM 统计信息。jstat -gc查看堆各分区大小、YGC,FGC次数和时长。如果服务器没有 GUI 图形界面,只提供了纯文本控制台环境,它是运行期定位虚拟机性能问题的首选工具。

jinfo:实时查看和修改指定进程的 JVM 配置参数。jinfo -flag查看和修改具体参数。

jstack:打印指定进程此刻的线程快照。定位线程长时间停顿的原因,例如死锁、等待资源、阻塞。如果有死锁会打印线程的互相占用资源情况。

参考:https://blog.csdn.net/qq_40991313/article/details/132382094
参考:https://blog.csdn.net/u011397981/article/details/128835270
参考:https://blog.csdn.net/G_D0120/article/details/139652201

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容