zoukankan      html  css  js  c++  java
  • kill -3 PID命令获取java应用堆栈信息

    一、应用场景:

      当linux服务器出现异常情况(响应缓慢,负载持续飙升)并且服务器没有安装对应的包而无法使用jstack等命令时,可以使用linux的kill相关命令打印堆栈信息。

      命令格式:kill -3 PID

    二、执行步骤:

    2.1、获取java进程的PID

    ps -ef|grep java

    结果的第二列数字就是进程对应的pid。

    2.2、kill -3 PID

    (1)如果项目通过Tomcat进行发布(普通的web项目),则对应的堆栈信息会打印在catalina.out文件中。

    (2)如果项目是基于SpringBoot并且使用nohup java -jar xxx.jar & 命令运行,则java堆栈信息会在jar包所在的nohup.out文件中。

    三、查看堆栈信息

    以nohup.out文件为例:

    3.1、cd命令进入SpringBoot jar包所在的目录

    3.2、vim nohup.out命令打开文件

    3.3、按Shift+G快捷键跳到文件的末尾,再连续按Ctrl+B,直到向上翻页找到堆栈信息(有java.lang.Thread.State关键字)

    或者直接输入/java.lang.Thread.State再按Enter键,就可以高亮出关键字,再按N键,可以遍历查看。

     

    vim常用翻页快捷键如下

    [Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
    [Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
    [Ctrl] + [d] 屏幕『向下』移动半页
    [Ctrl] + [u] 屏幕『向上』移动半页

    注:kill -3 PID命令只能打印那一瞬间java进程的堆栈信息,适合在服务器响应慢,cpu、内存快速飙升等异常情况下使用,可以方便地定位到导致异常发生的java类,解决如死锁、连接超时等原因导致的系统异常问题。该命令不会杀死进程。

  • 相关阅读:
    用SPSBackup将SharePoint Portal Server 2003站点迁移至新服务器
    对于Outlook 2003垃圾邮件规则的一点意见
    “blog.donews.com 瘫掉?”引发的评论
    jobmet弹出广告事件
    五一节安排
    IE 浏览器的创新
    newland.js的Ioc实现
    关于 CouchDB 的一些知识
    require("http").request(options, cb)的一些研究
    NOSQL数据库大比拼:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase
  • 原文地址:https://www.cnblogs.com/stm32stm32/p/10427618.html
Copyright © 2011-2022 走看看