1. 程式人生 > >kill -3 pid命令獲取java應用堆棧信息

kill -3 pid命令獲取java應用堆棧信息

gre pid 找到 快捷鍵 圖片 linux服務器 reference 內存 ring

一、應用場景:

  當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類,解決如死鎖、連接超時等原因導致的系統異常問題。該命令不會殺死進程。

kill -3 pid命令獲取java應用堆棧信息