1. 程式人生 > >linux系統資源監控

linux系統資源監控

top命令

1.平均負載(load average):

正在耗費CPU程序與正在等待io的程序之和,三個值分別是一分鐘,五分鐘,十五分鐘的平均負載,負載值只要小於CPU顆粒數屬於正常情況

任務程序(Tasks):

1.total總數,runing正在執行程序數,sleeping睡眠的程序數,stopped停止的程序數,zombie殭屍程序數

Cpu(s):cpu使用率,就是CPU花費時間(該時間是將CPU時間切片)處理程序所消耗的時間,該時間極短,肉眼感覺不出來,

1.us使用者程序消耗的時間佔比,如root使用者;sy系統程序消耗的CPU時間佔比,如讀寫磁碟,上下文切換(核心中);ni優先順序高的程序消耗CPU時間佔比,如果該項比較高,則程序設定了優先順序,搶佔CPU較強;id空閒程序消耗CPU的時間佔比;wa等待程序消耗CPU的時間佔比;hi硬中斷程序消耗CPU時間佔比;si軟中斷程序消耗CPU時間佔比;st強制交換

2.Mem記憶體:total總的記憶體大小,used已經使用的記憶體,free空閒的記憶體,buffers快取記憶體(磁碟到記憶體)

Swap:虛擬記憶體,total,used,free,cached高速緩衝(記憶體到磁碟)

對於Java專案來說沒有記憶體使用率一說,因為Java專案記憶體是通過GC垃圾回收機制來獲得記憶體,在配置JVM時候就已經把最大記憶體和醉小記憶體寫死了,他是一個固定值

如果top命令中%MEM的使用率超過80%,說明機器記憶體不夠,需要加記憶體

VIRT:實體記憶體和虛擬記憶體之和,

RES:純實體記憶體

SHR:共享記憶體

vmstat命令

cpu列:cs為程序總數,us,sy,id,wa,st對應上一條所述

procs列:①程序是程式執行最小單位,②程序有多個執行緒組成,程序是執行緒的最小單位,③多執行緒優勢是支援大併發,有點是節約資源,④程序比執行緒安全,⑤r表示正在消耗cup的程序,和負載中第一個同理

vmstat  間隔時間s  列印次數[(vmstat  2 5)  表示每個兩秒列印一次,共列印三次]

例:如果發現CPU使用過高,分析步驟①判斷是使用者CPU高還是系統CPU高,

②如果是使用者us使用程序消耗CPU較高,找到對應程序,在找到該程序下那個執行緒消耗CPU較高,再跟蹤該執行緒消耗的執行緒棧呼叫的方法,則是該方法導致CPU過高

top下①shift+p表示將所有程序按照消耗CPU佔比從大到小排序.②shift+m將所有程序按照消耗記憶體從大到小排序

查詢使用CPU最高執行緒方法一,命令:top -H -p 程序id;會顯示出該程序下全部的執行緒,(程序id就是top命令下的PID)

查詢使用CPU最高執行緒方法二.命令:top -p 程序id;會顯示出該程序,然後在互動命令去輸入H,該程序小的執行緒會逐一顯示出來,然後任然可以使用shift+p,和shift+m,對程序按照CPU的使用佔比大小,記憶體使用佔比大小從大到小排序

例:如果是系統(sy)使用CPU消耗佔比較高,分析方法如下

①說明核心消耗CPU消耗較高,檢視ni(優先順序),st(),hi(硬中斷),si(軟中斷),如果中斷消耗CPU較高說明程序切換較高,則可減少程序,如果st強制交換消耗CPU較高,說明記憶體可能不足,則需要加記憶體

②如果①中幾點CPU佔用都不高,則優先檢視磁碟是否繁忙,(在記憶體和磁碟之間來回切換)

iostat命令:

①一般使用命令:iostat -x檢視io和CPU(如上圖中avg-cpu,和top命令下CPU使用情況的縮寫一致)

②Device:裝置

sda # 磁碟總量,dm-0裝置一和dm-1裝置二

rrqm/s:每秒讀磁碟扇區的速度

wrqm/s:每秒寫磁碟扇區的速度

r/s:

avgrq_sz:單次操作磁碟的平均時間(磁碟io,單次讀寫)

avgqu_sz:磁碟等待佇列的大小

await:總的等待磁碟時間,如果該值較大,說明磁碟等待時間較大

r_await:讀等待磁碟的時間

w_await:寫等待磁碟的時間

svctm:serivce+time的縮寫,服務時間,磁碟真正處理的時間,單次磁碟服務時間應該在5以下(機械硬碟)

util:空閒的

③和命令sar -d效果類似

例:如果是系統程序(sy)佔用CPU過高,

①可通過iostat -x,sar -d,nmon來檢視磁碟是否繁忙,其中nmon直接檢視besy,如果高於20%則磁碟繁忙

②如果通過排查,①中都正常則通過strace命令(strace -c -f -p 程序id)

strace命令:是跟蹤系統核心呼叫的命令

usecs/cass:主動呼叫核心次數

calls:被動呼叫核心次數

syscall:被動用的核心

vmstat命令:

1.常用命令格式vmstat 

 procs列:

r 表示執行和等待的CPU時間片的程序數,這個值如果長期大於系統CPU個數9(核數),說明CPU不足,需要增加CPU

b 表示在等待資源的程序數,比如正在等待IO或者記憶體交換的等待

memory列

swpd 表示切換到記憶體交換區的記憶體大小,大小kb,通俗講就是虛擬記憶體的大小,如果swap值不為0或者比較大,只要si,so的之長期為0,這種情況一般屬於正常情況

free 表示當前空閒的實體記憶體(kb)

buff 表示緩衝大小(baffers cached),一般對塊裝置的讀寫叫做緩衝

cache 表示快取的大小(page cached),一般是檔案系統進行快取,頻繁訪問的檔案都會別快取,如果cache的值非常大,說明檔案比較多,如果此時Io和bi的值比較小,說明檔案系統效率較好

命令lsof-d pid 檢視程序開啟的檔案控制代碼數,

命令ulimit -i 檢視系統預設開啟檔案數

命令ulimit -n 整數  修改預設開啟檔案數(ulimit -n 2048)

NMON命令 

執行命令(./nmon_x86_rhel52 -fT -s 2 -c 30)(每隔2秒採集一次資料,共採集30次)會在nmon的根目錄生成一個以.nmon結尾的檔案,將該檔案下載到本地使用nmon自帶的分析工具(nmon analyser v33g.xls,網上下載)開啟

監控資料會以圖表形式分析出來,直觀準確,其中包括CPU,磁碟,記憶體,等等的資料

 命令free -m(檢視剩餘記憶體)