在Linux中當Tomcat啟動后,我們只是去查看應用是否能夠正常訪問來判斷Tomcat啟動是否正常。一般情況下這樣看是沒有問題的,但是有時候我們會發現當Tomcat使用了一段時間后,開始出現CPU或者內存飆升。此時,查看Tomcat日志也許無法看到有效信息,因此有必要了解一下Linux和jdk給我們提供的相關工具。
1、查看內存和CPU使用較高的進程信息
輸入top,我們可以看到下面的信息
2、如果我們想查看PID為3583的進程信息,則可以執行
top -H -p 3582
說明:3582為進程ID,一個進程可以有多個線程。這個基礎知識科普給剛入門的小伙伴。
此時,我們可以看到進程3582下面的相關線程信息。占用資源較多的線程會排在前幾個。OK,截圖如下。
3、既然都找到線程消耗信息了,但是我們還沒找到原因。別着急,下面我們來查看一下某個線程的堆棧信息,
如PID為3590的線程。至於說為什么要看堆棧信息,這個就不用我多說了。如果不清楚的,估計也接觸不到這個東東了。OK,回歸正題。要查看某個java線程的堆棧信息,我們當然得使用jdk自帶的jstack工具。
使用方法:
jstack [進程] | grep -A 10 [線程的16進制]
-A 10表示查找到所在行的后10行。3590用計算器轉換為16進制e06,注意字母是小寫。
OK,下面我們執行下面的命令。
jstack 3582|grep -A 10 e06
執行完畢,我們會看到如圖所示的堆棧信息,此時我們就能結合相關線程提示的信息來做自己的判斷了。
---------------------
作者:洛楓偃月
來源:CSDN
原文:https://blog.csdn.net/zgs_shmily/article/details/51019933
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!