Linux 性能監(jiān)控命令

??????? 在聽“”王子“”分享的過程中剛好聽到他曾做過性能方面的測(cè)試,事后向他請(qǐng)教,他把他在簡(jiǎn)書寫的Linux服務(wù)器監(jiān)控命令的文章發(fā)給我讓我看看。我這周就在公司的電腦上實(shí)操了一把,又在網(wǎng)上學(xué)習(xí)了其他命令實(shí)操了一回,在此展示出來。


1.Top查看CPU進(jìn)程

cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"查看CPU名稱和大小

2、查看數(shù)據(jù)庫

ps -ef|grep mysqld看看是否有mysqld_safe和mysqld進(jìn)程

3、查看內(nèi)存

free查看內(nèi)存情況(free –m-m代表下面的是以M為單位)

列名

說明

total

總計(jì)物理內(nèi)存的大小。

used

已使用的內(nèi)存數(shù)量。

free

可用的內(nèi)存數(shù)量。

Shared

多個(gè)進(jìn)程共享的內(nèi)存總額。

Buffers/cached

磁盤緩存的大小。

選項(xiàng)

說明

-b

以字節(jié)為單位顯示數(shù)據(jù)。

-k

以千字節(jié)(KB)為單位顯示數(shù)據(jù)(缺省值)。

-m

以兆(MB)為單位顯示數(shù)據(jù)。

-s delay

該選項(xiàng)將使free持續(xù)不斷的刷新,每次刷新之間的間隔為delay指定的秒數(shù),如果含有小數(shù)點(diǎn),將精確到毫秒,如0.5為500毫秒,1為一秒。

對(duì)于free命令的輸出,只需要關(guān)注Mem和-/+ buffers/cache的輸出結(jié)果

Mem:該行使從操作系統(tǒng)的角度來看待輸出數(shù)據(jù)的,used(7687500)表示內(nèi)核(Kernel)+Applications+buffers+cached。free(284624)表示系統(tǒng)還有多少內(nèi)存可供使用。

-/+buffers/cache:該行則是從應(yīng)用程序的角度來看輸出數(shù)據(jù)的。其free = 操作系統(tǒng)used + buffers + cached

free -k -s 1.5#以千字節(jié)(KB)為單位顯示數(shù)據(jù),同時(shí)每隔1.5刷新輸出一次,直到按CTRL+C退出

df -h查看磁盤空間

Cat /proc/meminfo查看內(nèi)存詳細(xì)使用情況

使用free 命令來顯示動(dòng)態(tài)的內(nèi)存使用信息,free 只是給你大概的內(nèi)存信息,而 meminfo 提供的信息更加詳細(xì)。

4.設(shè)備IO負(fù)載的實(shí)時(shí)監(jiān)控工具(iostat)主要用于監(jiān)控系統(tǒng)設(shè)備的IO負(fù)載情況,iostat首次運(yùn)行時(shí)顯示自系統(tǒng)啟動(dòng)開始的各項(xiàng)統(tǒng)計(jì)信息,之后運(yùn)行iostat將顯示自上次運(yùn)行該命令以后的統(tǒng)計(jì)信息。

iostat -x該選項(xiàng)將用于顯示和io相關(guān)的擴(kuò)展數(shù)據(jù)。

% user :1.05。在用戶級(jí)(應(yīng)用程序)執(zhí)行時(shí)產(chǎn)生的CPU使用率

% system :0.35。在系統(tǒng)級(jí)(內(nèi)核)執(zhí)行時(shí)產(chǎn)生的CPU使用率

% idle :98.08。在CPU空閑并且系統(tǒng)沒有未完成的磁盤I/O請(qǐng)求(idle,如果高,說明CPU較空閑,如果持續(xù)低于10的話,說明CPU處理能力低,此時(shí)存在CPU瓶頸)

% iowait :0.53。CPU空閑期間系統(tǒng)有未完成的磁盤I/O請(qǐng)求

%nice :0.00。(改變進(jìn)程優(yōu)先序列操作)操作使用

%steal :0.00。虛擬CPU的無意識(shí)等待時(shí)間

iostat -d 1 3#僅顯示設(shè)備的IO負(fù)載,其中每隔1秒刷新并輸出結(jié)果一次,輸出3次后iostat退出。

iostat -d 1#和上面的命令一樣,也是每隔1秒刷新并輸出一次,但是該命令將一直輸出,直到按CTRL+C退出。

列名

說明

Blk_read/s

每秒塊(扇區(qū))讀取的數(shù)量。

Blk_wrtn/s

每秒塊(扇區(qū))寫入的數(shù)量。

Blk_read

總共塊(扇區(qū))讀取的數(shù)量。

Blk_wrtn

總共塊(扇區(qū))寫入的數(shù)量。

iostat -dx sda 1 3#指定監(jiān)控的設(shè)備名稱為sda,該命令的輸出結(jié)果和上面命令完全相同。

util是設(shè)備的利用率。如果它接近100%,通常說明設(shè)備能力趨于飽和。

await是平均每次請(qǐng)求的等待時(shí)間。這個(gè)時(shí)間包括了隊(duì)列時(shí)間和服務(wù)時(shí)間,也就是說,一般情況下,await大于svctm,它們的差值越小,則說明隊(duì)列時(shí)間越短,反之差值越大,隊(duì)列時(shí)間越長,說明系統(tǒng)出了問題。

avgqu-sz是平均請(qǐng)求隊(duì)列的長度。毫無疑問,隊(duì)列長度越短越好。

5.Linux的實(shí)時(shí)監(jiān)測(cè)命令(watch):

可以幫你實(shí)時(shí)監(jiān)測(cè)一個(gè)命令的運(yùn)行結(jié)果,省得一遍又一遍的手動(dòng)運(yùn)行。該命令最為常用的兩個(gè)選項(xiàng)是-d和-n,其中-n表示間隔多少秒執(zhí)行一次"command",-d表示高亮發(fā)生變化的位置。

watch -d -n 1 'who'#每隔一秒執(zhí)行一次who命令,以監(jiān)視服務(wù)器當(dāng)前用戶登錄的狀況

watch -d -n 1 'df -h; ls -l'監(jiān)控磁盤的使用狀況,以及當(dāng)前目錄下文件的變化狀況,包括文件的新增、刪除和文件修改日期的更新等。

6.CPU的實(shí)時(shí)監(jiān)控工具(mpstat)該命令主要用于報(bào)告當(dāng)前系統(tǒng)中所有CPU的實(shí)時(shí)運(yùn)行狀況。

Mpstat 2 5該命令將每隔2秒輸出一次CPU的當(dāng)前運(yùn)行狀況信息,一共輸出5次,如果沒有第二個(gè)數(shù)字參數(shù),mpstat將每隔兩秒執(zhí)行一次,直到按CTRL+C退出。

第一行的末尾給出了當(dāng)前系統(tǒng)中CPU的數(shù)量。后面的表格中則輸出了系統(tǒng)當(dāng)前CPU的使用狀況,以下為每列的含義:

列名

說明

%user

在internal時(shí)間段里,用戶態(tài)的CPU時(shí)間(%),不包含nice值為負(fù)進(jìn)程? (usr/total)*100

%nice

在internal時(shí)間段里,nice值為負(fù)進(jìn)程的CPU時(shí)間(%)?? (nice/total)*100

%sys

在internal時(shí)間段里,內(nèi)核時(shí)間(%)?????? (system/total)*100

%iowait

在internal時(shí)間段里,硬盤IO等待時(shí)間(%) (iowait/total)*100

%irq

在internal時(shí)間段里,硬中斷時(shí)間(%)???? (irq/total)*100

%soft

在internal時(shí)間段里,軟中斷時(shí)間(%)???? (softirq/total)*100

%idle

在internal時(shí)間段里,CPU除去等待磁盤IO操作外的因?yàn)槿魏卧蚨臻e的時(shí)間閑置時(shí)間(%) (idle/total)*100

計(jì)算公式:

total_cur=user+system+nice+idle+iowait+irq+softirq

total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+pre_irq+ pre_softirq

user=user_cur – user_pre

total=total_cur-total_pre

其中_cur 表示當(dāng)前值,_pre表示interval時(shí)間前的值。上表中的所有值可取到兩位小數(shù)點(diǎn)。

mpstat -P ALL 2 3#-P ALL表示打印所有CPU的數(shù)據(jù),這里也可以打印指定編號(hào)的CPU數(shù)據(jù),如-P 0(CPU的編號(hào)是0開始的)

7.虛擬內(nèi)存的實(shí)時(shí)監(jiān)控工具(vmstat)用來獲得UNIX系統(tǒng)有關(guān)進(jìn)程、虛存、頁面交換空間及CPU活動(dòng)的信息。這些信息反映了系統(tǒng)的負(fù)載情況。vmstat首次運(yùn)行時(shí)顯示自系統(tǒng)啟動(dòng)開始的各項(xiàng)統(tǒng)計(jì)信息,之后運(yùn)行vmstat將顯示自上次運(yùn)行該命令以后的統(tǒng)計(jì)信息。用戶可以通過指定統(tǒng)計(jì)的次數(shù)和時(shí)間來獲得所需的統(tǒng)計(jì)信息。

vmstat 1 3#這是vmstat最為常用的方式,其含義為每隔1秒輸出一條,一共輸出3條后程序退出。

下面將給出輸出表格中每一列的含義說明:

有關(guān)進(jìn)程的信息有:(procs)

r:? 在就緒狀態(tài)等待的進(jìn)程數(shù)。

b: 在等待狀態(tài)等待的進(jìn)程數(shù)。

有關(guān)內(nèi)存的信息有:(memory)

swpd:? 正在使用的swap大小,單位為KB。

free:??? 空閑的內(nèi)存空間。

buff:??? 已使用的buff大小,對(duì)塊設(shè)備的讀寫進(jìn)行緩沖。

cache: 已使用的cache大小,文件系統(tǒng)的cache。

有關(guān)頁面交換空間的信息有:(swap)

si:? 交換內(nèi)存使用,由磁盤調(diào)入內(nèi)存。

so: 交換內(nèi)存使用,由內(nèi)存調(diào)入磁盤。

有關(guān)IO塊設(shè)備的信息有:(io)

bi:? 從塊設(shè)備讀入的數(shù)據(jù)總量(讀磁盤) (KB/s)

bo: 寫入到塊設(shè)備的數(shù)據(jù)總理(寫磁盤) (KB/s)

有關(guān)故障的信息有:(system)

in: 在指定時(shí)間內(nèi)的每秒中斷次數(shù)。

sy: 在指定時(shí)間內(nèi)每秒系統(tǒng)調(diào)用次數(shù)。

cs: 在指定時(shí)間內(nèi)每秒上下文切換的次數(shù)。

有關(guān)CPU的信息有:(cpu)

us:? 在指定時(shí)間間隔內(nèi)CPU在用戶態(tài)的利用率。

sy:? 在指定時(shí)間間隔內(nèi)CPU在核心態(tài)的利用率。

id:? 在指定時(shí)間間隔內(nèi)CPU空閑時(shí)間比。

wa: 在指定時(shí)間間隔內(nèi)CPU因?yàn)榈却齀/O而空閑的時(shí)間比。

vmstat 可以用來確定一個(gè)系統(tǒng)的工作是受限于CPU還是受限于內(nèi)存:如果CPU的sy和us值相加的百分比接近100%,或者運(yùn)行隊(duì)列(r)中等待的進(jìn)程數(shù)總是不等于0,且經(jīng)常大于4,同時(shí)id也經(jīng)常小于40,則該系統(tǒng)受限于CPU;如果bi、bo的值總是不等于0,則該系統(tǒng)受限于內(nèi)存。

8.當(dāng)前運(yùn)行進(jìn)程的實(shí)時(shí)監(jiān)控工具(pidstat)主要用于監(jiān)控全部或指定進(jìn)程占用系統(tǒng)資源的情況,如CPU,內(nèi)存、設(shè)備IO、任務(wù)切換、線程等。pidstat首次運(yùn)行時(shí)顯示自系統(tǒng)啟動(dòng)開始的各項(xiàng)統(tǒng)計(jì)信息,之后運(yùn)行pidstat將顯示自上次運(yùn)行該命令以后的統(tǒng)計(jì)信息。

選項(xiàng)

說明

-l

顯示該進(jìn)程和CPU相關(guān)的信息(command列中可以顯示命令的完整路徑名和命令的參數(shù))。

-d

顯示該進(jìn)程和設(shè)備IO相關(guān)的信息。

-r

顯示該進(jìn)程和內(nèi)存相關(guān)的信息。

-w

顯示該進(jìn)程和任務(wù)時(shí)間片切換相關(guān)的信息。

-t

顯示在該進(jìn)程內(nèi)正在運(yùn)行的線程相關(guān)的信息。

-p

后面緊跟著帶監(jiān)控的進(jìn)程id或ALL(表示所有進(jìn)程),如不指定該選項(xiàng),將監(jiān)控當(dāng)前系統(tǒng)正在運(yùn)行的所有進(jìn)程。

pidstat -p 1 2 3 -l監(jiān)控pid為1(init)的進(jìn)程的CPU資源使用情況,其中每隔3秒刷新并輸出一次,3次后程序退出。

%usr:該進(jìn)程在用戶態(tài)的CPU使用率。

%system:該進(jìn)程在內(nèi)核態(tài)(系統(tǒng)級(jí))的CPU使用率。

%CPU:該進(jìn)程的總CPU使用率,如果在SMP環(huán)境下,該值將除以CPU的數(shù)量,以表示每CPU的數(shù)據(jù)。

CPU:?該進(jìn)程所依附的CPU編號(hào)(0表示第一個(gè)CPU)。

pidstat -p 1 2 3 -d監(jiān)控pid為1(init)的進(jìn)程的設(shè)備IO資源負(fù)載情況,其中每隔2秒刷新并輸出一次,3次后程序退出。

kB_rd/s:該進(jìn)程每秒的字節(jié)讀取數(shù)量(KB)。

kB_wr/s:該進(jìn)程每秒的字節(jié)寫出數(shù)量(KB)。

kB_ccwr/s: 該進(jìn)程每秒取消磁盤寫入的數(shù)量(KB)。

pidstat -p 1 2 3 -r監(jiān)控pid為1(init)的進(jìn)程的內(nèi)存使用情況,其中每隔2秒刷新并輸出一次,3次后程序退出。

%MEM:該進(jìn)程的內(nèi)存使用百分比。

pidstat -p 1 2 3 -w監(jiān)控pid為1(init)的進(jìn)程任務(wù)切換情況,其中每隔2秒刷新并輸出一次,3次后程序退出。

cswch/s:每秒任務(wù)主動(dòng)(自愿的)切換上下文的次數(shù)。主動(dòng)切換是指當(dāng)某一任務(wù)處于阻塞等待時(shí),將主動(dòng)讓出自己的CPU資源。

nvcswch/s:每秒任務(wù)被動(dòng)(不自愿的)切換上下文的次數(shù)。被動(dòng)切換是指CPU分配給某一任務(wù)的時(shí)間片已經(jīng)用完,因此將強(qiáng)迫該進(jìn)程讓出CPU的執(zhí)行權(quán)。

pidstat -p 1 2 3 -tr監(jiān)控pid為1(init)的進(jìn)程及其內(nèi)部線程的內(nèi)存(r選項(xiàng))使用情況,其中每隔2秒刷新并輸出一次,3次后程序退出。需要說明的是,如果-t選項(xiàng)后面不加任何其他選項(xiàng),缺省監(jiān)控的為CPU資源。結(jié)果中黃色高亮的部分表示進(jìn)程和其內(nèi)部線程是樹狀結(jié)構(gòu)的顯示方式。

TGID: 線程組ID。TID: 線程ID。

以上監(jiān)控不同資源的選項(xiàng)可以同時(shí)存在,這樣就將在一次輸出中輸出多種資源的使用情況,如:pidstat -p 1 -dr。

9.報(bào)告磁盤空間使用狀況(df):

df -h該命令最為常用的選項(xiàng)就是-h,該選項(xiàng)將智能的輸出數(shù)據(jù)單位,以便使輸出的結(jié)果更具可讀性。

10.評(píng)估磁盤的使用狀況(du)

選項(xiàng)

說明

-a

包括了所有的文件,而不只是目錄。

-b

以字節(jié)為計(jì)算單位。

-k

以千字節(jié)(KB)為計(jì)算單位。

-m

以兆字節(jié)(MB)為計(jì)算單位。

-h

是輸出的信息更易于閱讀。

-s

只顯示工作目錄所占總空間。

--exclude=PATTERN

排除掉符合樣式的文件,Pattern就是普通的Shell樣式,?表示任何一個(gè)字符,*表示任意多個(gè)字符。

--max-depth=N

從當(dāng)前目錄算起,目錄深度大于N的子目錄將不被計(jì)算,該選項(xiàng)不能和s選項(xiàng)同時(shí)存在。

du --max-depth=1 -h僅顯示子一級(jí)目錄的信息。

du -sh ./*#獲取當(dāng)前目錄下所有子目錄所占用的磁盤空間大小。

du --exclude=Te* -sh ./*在當(dāng)前目錄下,排除目錄名模式為Te*的子目錄(./Test),輸出其他子目錄占用的磁盤空間大小。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容