如何检查服务器堆栈日志

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


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


ps -ef |grep 111111

结果如下:
在这里插入图片描述

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

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


第二步,查看服务器日志


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

tail -500f xxxxx.log

如果出现长时间的full gc,你也要小心了。

这时,需要继续检查。


第三步,查看应用进程下cpu或者内存使用率非常高的线程

top -H -p 11111 # 11111是第一步查出来的应用进程

结果如下:

在这里插入图片描述

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

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


第四步 下载堆栈日志


jstack -l 11111 > xxx.stack //  11111是第一查出来的应用进程

这个命令可以把堆栈日志下载到xxx.stack的文本文件中。

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

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


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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值