性能監控top命令

在性能測試時,會實時監控服務器進程資源佔用情況,top命令是Linux系統自帶的用於監控系統狀況的工具

一、命令行輸入top命令,返回下圖中的信息,上部分是系統狀態統計信息,下部分是進程信息

備註:top命令默認每間隔3秒刷新顯示,要手動刷新,可以輸入回車或者空格鍵,也可以用(top d 秒數 )命令來設置刷新顯示時間

各行代表的含義:

1、第一行:系統運行時間和平均負載

當前系統時間爲01:29:02;

up 4 day ,8:53 ----系統已運行時間爲4天8時53分,格式:天,時:分;

登陸4個用戶數;

load average----系統負載,三個數分別是1分鐘、5分鐘、15分鐘的負載情況。load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值,如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了;

 

2、第二行:任務(或進程)

共運行135個進程,1個運行中進程,134個進程休眠,停止狀態的進程是0個,僵死狀態的進程也是0個;

running----運行

sleep----休眠

stoped----停止

zombie----殭屍

3、第三行:cpu狀態

%us(user)----用戶空間佔用cpu的百分比(user:cpu運行未調整的優先級用戶進程的時間 )

%sy(system)----內核空間佔用cpu的百分比

%ni(nice)----改過的優先級的進程佔用cpu的百分比(nice:cpu運行已調整優先級的用戶進程的時間)

%id(idle)----空閒cpu百分比

%wa(IO wait)----等待IO佔用cpu的百分比

%hi----硬中斷佔用cpu的百分比

%si----軟中斷佔用cpu的百分比

%st(steal)----管理程序(hypervisor)爲另一個虛擬進程提供服務而等街待虛擬cpu百分比

4、第四行:內存狀態

total----物理內存總量
used----已使用的物理內存總量
free----空閒內存總量
buffers----緩存的內存量

5、第五行:交換分區狀態

total----交換分區總量
used----已使用的交換區總量
free----空閒交換區總量
cached----緩衝的交換區總量

備註:可用內存計算公式 = buffers + free + cached

6、第七行:各進程的狀態監控

PID----進程ID,進程的唯一標識符;

USER----進程所有者的實際用戶名;

PR----進程的調度優先級,這個字段的一些值是"rt",表示這些進程正在運行,PR(new)=PR(old)+nice,PR(new)值越小,優先級就越高,越早被執行;

NI----進程nice值,進程可被執行的優先級的修改正值,越小的值意味着越高的優先級,負值表示高優先級,正值表示低優先級

VIRT(virtual  memory  usage)----進程使用的虛擬內存,進程使用的虛擬內存總量,單位kb,虛擬內存是按照申請量來計算的,而不是按照實際使用量來計算的,VIRT=SWAP+RES;

RES(resident  memory usage)----常駐內存,單位kb,RES=CODE+DATA;

SHR(shared  memory)----共享內存,單位kb;

S----進程的狀態,它有以下不同的值:

  • D(interruptible  sleep)----不可中斷的睡眠
  • R(running) ----運行中
  • S(sleeping) ----睡眠
  • T(traced or stopped) ----被跟蹤或已停止
  • Z(zombie) ----殭屍

%CPU----自從上一次更新時到現在進程所使用的CPU時間百分比;

%MEM----進程使用的可用物理內存百分比;

TIME+ ---- 進程已使用的CPU時間,單位爲1/100秒,精確到百分之一秒;

COMMAND----運行進程所使用的命令,進程名稱(命令名/命令行);

 

默認情況下會顯示以上第七行常用的列名稱,如果以上列並不滿足自己的要求,可以按f(小寫)鍵選擇顯示其它列

按f(小寫)鍵後進入下面的頁面,圖中紅框中可以選擇你所需的列

 按 a-z(小寫) 即可顯示或隱藏對應的列,當選擇需要顯示的對應的列名稱後,列名稱前面會加有一個*號且從小寫字母變成大寫字母,選擇結束後按回車鍵;

如果需要改變列的顯示順序,按o(小寫)鍵,按 a-z (小寫)可以將相應的列向右移動,按 A-Z (大寫)可以將相應的列向左移動,結束後按回車鍵;

按 F(大寫) 或 O (大寫)鍵,然後按 a-z 可以將進程按照相應的列進行排序,如果按照進程已使用的時間來排序,那麼按F(大寫)鍵進入頁面,然後按m(小寫)鍵,最後按回車鍵

回到top命令行頁面,可以看到已按照進程所使用的時間來排序了

R(大寫) 鍵可以將當前的排序倒轉;

其它備選的列:

PPID----父進程ID

RUSER---- 真正的用戶名

UID---- 進程所有者的用戶id

GROUP----進程所有者的組名

TTY----啓動進程的終端名,不是從終端啓動的進程則顯示爲 ?

P----最後使用的CPU,僅在多CPU環境下有意義

SWAP----進程使用的虛擬內存中被換出的大小,單位kb

TIME----進程使用的CPU時間總計,單位秒

CODE----可執行代碼佔用的物理內存大小,單位kb

DATA----可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb

NFLT----頁面錯誤次數

NDRT----最後一次寫入到現在,被修改過的頁面數

WCHAN----若該進程在睡眠,則顯示睡眠中的系統函數名

FLags----任務標誌

 

二、top常用的選項

格式:top  [選項]

b:批次檔模式,搭配 "n" 參數一起使用,可以用來將 top 的結果輸出到檔案內

d:指定每兩次屏幕信息刷新之間的時間間隔,當然用戶可以使用s交互命令來改變之;

p:通過指定監控進程ID來僅僅監控某個進程的狀態;

q:該選項將使top沒有任何延遲的進行刷新,如果調用程序有超級用戶權限,那麼top將以儘可能高的優先級運行;

S:指定累計模式;

s:使top命令在安全模式中運行,這將去除交互命令所帶來的潛在危險;

i:使top不顯示任何閒置或者僵死進程;

c:顯示整個命令行而不只是顯示命令名;

 

三、服務器監控中常用命令

1、顯示所有進程

top  -ab  -n 1

2、只顯示某一個進程名的所有進程信息

top  -ab  -n  1 | grep  進程名

3、監控java線程數

ps -eLf | grep java | wc -l

4、監控網絡客戶連接數

netstat -n | grep tcp | grep 偵聽端口 | wc -l

5、進程中線程數量

ls    /proc/PID/task  |  wc -l

PID---進程ID

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章