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类,解决如死锁、连接超时等原因导致的系统异常问题。该命令不会杀死进程。

  • 相关阅读:
    We7 2.7版:全拖拽建站 开源CMS
    We7 CMS 2.6RC2版本发布 开源CMS
    LINQ简易教程
    C# 引用 C# DLL
    ASP.NET中母版页与JavaScript控制的一点小问题
    LINQ连接远端数据库问题
    ASP.NET中自动生成XML文件并通过XSLT显示在网页中的方法
    【转载】常见逻辑错误
    因为压力大变得很郁闷的时候怎么办
    代码覆盖度C#代码监控工具NCover、Rational PureCoverage、BullseyeCoverage
  • 原文地址:https://www.cnblogs.com/stm32stm32/p/10427618.html
Copyright © 2011-2022 走看看