1. 程式人生 > >Linux-Tomcat程序CPU使用率100%原因分析

Linux-Tomcat程序CPU使用率100%原因分析

  在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

執行完畢,我們會看到如圖所示的堆疊資訊,此時我們就能結合相關執行緒提示的資訊來做自己的判斷了。

請加入我的qq群:425783133