kill -3 pid命令獲取java應用堆棧信息
阿新 • • 發佈:2019-02-24
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應用堆棧信息