JVM故障诊断和处理工具
本文已被Github仓库收录 https://github.com/silently9527/JavaCore 微信公众号:贝塔学Java 前言 前几天中午正在和同事最近聊股市较好,这几天每天都可以喝点肉汤,心里还是挺高兴的;正在这个时候收到了线上告警邮件和运维同学的消息,“你们有服务挂了!”,心里一紧,立马打开电脑看来下线上cat监控大盘,发现很多服务都在报错,根据cat上的监控日志很快发现了其中一个服务内存溢出导致其他调用服务也有问题,竟然已经定位到了出问题的服务,那就简单了,没有是重启解决不了的问题,重启之后很快服务都恢复正常了。几分钟之后又报错了,同样也是这个服务内存溢出,经过排查后发现该服务的堆内存被改小了,好家伙,运维同学不讲武德,搞偷袭,趁我没反应过来调了内存,内存调整回去之后服务就恢复了正常。 事后把线上的快照文件拖了下来分析,发现本身这个项目的代码也有些问题,本文就整理了一下JVM常用的分析工具。 命令行工具 在安装完JDK之后在JAVA_HOME/bin目录下JDK已经提供了很多命令行的工具 可能我们最常用的就是 java 、 javac 这两个命令,除了这两个命令之外还有提供很多其他的实用工具,本文主要来一起学习对JVM监控诊断工具 虚拟机进程状况工具(jps) 该工具的功能比较单一,与linux中的ps功能类似,用来列出正在运行的虚拟机进程