查看JVM堆栈参数


当项目上线后,作为一个后台开发选手,必备的技能之一就是当服务器出现故障时,查看服务器进程及各种参数,然后排查问题。


第一步,根据应用端口号查看应用进程

ps -ef |grep 111111
1
结果如下:


注意观察CPU、内存参数,百分比,绝对数值越高说明服务器压力越大,但并不代表挂了。

当然,如果长时间维持在较高水平,即便没挂,也说明离挂不远了。


第二步,查看服务器日志

查看应用服务器日志,观察是否存在 full gc。

tail -500f xxxxx.log
1
如果出现长时间的full gc,你也要小心了。

这时,需要继续检查。


第三步,查看应用进程下cpu或者内存使用率非常高的线程
top -H -p 11111 # 11111是第一步查出来的应用进程
1
结果如下:

 

如果cpu或者mem长时间保持在99%,说明这个线程占用了大量资源。

这时需要把服务器内存堆栈日志下载下来。


第四步 下载堆栈日志

jstack -l 11111 > xxx.stack // 11111是第一查出来的应用进程
1
这个命令可以把堆栈日志下载到xxx.stack的文本文件中。

xxx.stack是一个文本文件,就在当前目录下,你可以把他下载到电脑硬盘,用文本工具打开。


第五步 查找导致高使用率的原因

通常第三步找到的高使用率的线程就是导致服务器高压力的原因。

在第四步下载的日志文件中查找改线程的ID,要注意的是,通过名称看到屏幕的id是十进制的,而下载的文本日志中的ID是十六进制的,需要把十进制转换成十六进制的数字,才能搜索到。

如果能够在堆栈日志中搜索到改线程ID,就可以找到导致服务器压力大的原因。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM