??????? 在聽“”王子“”分享的過程中剛好聽到他曾做過性能方面的測(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),輸出其他子目錄占用的磁盤空間大小。