【java】如何排查服务器程序异常

web服务运行时,如果发生各种卡顿和假死,该如何去排查

检查服务器磁盘情况

使用df或者free命令查询磁盘情况
磁盘情况
服务器磁盘空间不足时,会导致某些要写入磁盘的方法阻塞,可能会导致服务不可用。
解决方法:清理磁盘不需要的文件,或者扩容。

查询服务器内存和cpu使用情况

使用top命令查看运行内存和cpu消耗
系统内存使用情况

  1. 如果有非java程序占用了较高的cpu和内存,则排查该程序是否正常。是否是其他外部因素占用了服务器大量资源。
  2. 系统内存MEM内存不足,排查各个服务占用内存情况。
  3. 在没有其他服务干扰情况下,使用jstat命令或者jmap命令查看java内存使用情况,是否内存不足。
  4. 如果JAVA程序的CPU占用过高,则进行接下来排查java服务原因java服务cpu占用过高
    java占用cpu过高时,使用PID和jstack命令查询实际方法栈情况。
    使用PID查看线程占用情况
    top -p PID -H
    查出有问题的线程
    线程情况
    jstack PID | grep -A 100 线程的16进制号
    如jstack 8073 | grep -A10 1f8a(8074的16进制)
    查询问题
    排查出有问题线程的代码定位。
    定位之后查看程序代码如何引发的。
查看数据库情况

数据库超时或者阻塞,也会造成web服务的无法响应。
使用数据库命令查询

SELECT * FROM information_schema.INNODB_TRX

查询出数据库阻塞情况,是否有很多事务在等待,导致服务卡死。
找出阻塞语句,排查程序卡死原因。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值