1. 程式人生 > >Linux 檢視Tomcat記憶體佔用情況

Linux 檢視Tomcat記憶體佔用情況

以前伺服器還是用 Windows Server 系統的時候,檢視一下各個程序對記憶體的影響就再簡單不過了,開啟工作管理員跟蹤一下相關的 JAVA 程序就OK了。但是伺服器如果使用的是 Linux 系統,有不少小夥伴就不知道怎麼看了,而且網友的回覆也是眾說紛紜。我總結了一下,大致有以下三個方向:

1.在 Linux 端寫批處理檔案,呼叫檢視Tomcat 的記憶體使用情況;
2.在專案中植入.jsp檔案,裡面包含查詢當前系統程序記憶體使用情況的JAVA方法並列印輸出,然後在瀏覽器中直接呼叫就能看見結果了;
3.用第三方監測工具,通過遠端呼叫檢視監測結果。

看起來費老牛鼻子勁了,我他媽就不相信了:堂堂一個熱門的伺服器系統,就沒有自己的工作管理員?逗我玩兒呢吧!

Linux Top命令

在 Linux 命令列中,輸入“Top” 回車,You See,工作管理員在這兒!


統計資訊區前五行是系統的統計資訊,每一行代表了不同的資料內容。

第一行是任務佇列資訊,跟 uptime 命令的執行結果一樣,說明如下:

17:01:28 系統當前時間
up 95 days,4:53 系統的執行時間:95天4個小時53分鐘
2 users 當前登入使用者數
load average: 1.13,1.04,1.01 系統負載,即任務佇列的平均長度,三個資料分別是1分鐘、5分鐘、15分鐘前到現在的平均值

第二行是程序資訊,說明如下:

107 total 程序總數
1 running 正在執行的程序數
105 sleeping 休眠的程序數
0 stopped 停止的程序數
1 zombie 殭屍程序數

第三行是CPU資訊,說明如下:

50.5%us 使用者空間佔用CPU百分比
0.2%sy 核心空間佔用CPU百分比
0.0%ni 使用者程序空間內改變過優先順序的程序佔用CPU百分比
49.3%id 空閒CPU百分比
0.0%wa 等待輸入輸出的CPU時間百分比
0.0%hi 硬體CPU中斷佔用百分比
0.0%si 軟中斷佔用百分比
0.0%st 虛擬機器佔用百分比

後二行是記憶體資訊,說明如下:

Mem:
3921144k total 實體記憶體總量
3221212k used 使用的實體記憶體總量
699932k free 空閒記憶體總量
196932k buffers 用作核心快取的記憶體量
Swap:
192772k total 交換區總量
0k used 使用的交換區總量
192772k free 空閒交換區總量
123988k cached 緩衝的交換區總量(記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在於記憶體中的交換區的大小,相應的記憶體再次被換出時可不必再對交換區寫入)

統計區域的下方顯示了各個程序的詳細資訊,相關列說明如下:

序號 列名 含義
a PID 程序id
b PPID 父程序id
c RUSER Real user name
d UID 程序所有者的使用者id
e USER 程序所有者的使用者名稱
f GROUP 程序所有者的組名
g TTY 啟動程序的終端名。不是從終端啟動的程序則顯示為 ?
h PR 優先順序
i NI nice值。負值表示高優先順序,正值表示低優先順序
j P 最後使用的CPU,僅在多CPU環境下有意義
k %CPU 上次更新到現在的CPU時間佔用百分比
l TIME 程序使用的CPU時間總計,單位秒
m TIME+ 程序使用的CPU時間總計,單位1/100秒
n %MEM 程序使用的實體記憶體百分比
o VIRT 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
p SWAP 程序使用的虛擬記憶體中,被換出的大小,單位kb。
q RES 程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
r CODE 可執行程式碼佔用的實體記憶體大小,單位kb
s DATA 可執行程式碼以外的部分(資料段+棧)佔用的實體記憶體大小,單位kb
t SHR 共享記憶體大小,單位kb
u nFLT 頁面錯誤次數
v nDRT 最後一次寫入到現在,被修改過的頁面數。
w S 程序狀態(D=不可中斷的睡眠狀態,R=執行,S=睡眠,T=跟蹤/停止,Z=殭屍程序)
x COMMAND 命令名/命令列
y WCHAN 若該程序在睡眠,則顯示睡眠中的系統函式名
z Flags 任務標誌,參考 sched.h

預設情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。

更改顯示內容通過 f 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定。

按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最後按回車鍵確定。

按大寫的 F 或 O 鍵,然後按 a-z 可以將程序按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。

 

另外賦增Linux下修改JVM記憶體大小

Linux下修改JVM記憶體大小:

要新增在tomcat 的bin 下catalina.sh 裡,位置cygwin=false前 。注意引號要帶上,紅色的為新新增的.

# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false