1、100.0.0.16/28 對應(yīng)網(wǎng)段的網(wǎng)關(guān)地址县遣、廣播地址糜颠、可分配IP地址范圍
根據(jù)IP地址100.0.0.16判斷該IP為一個A類IP地址汹族。
根據(jù)子網(wǎng)掩碼28,得到主機位是4位,掩碼為255.255.255.240
因此主機數(shù)量為2^4-2= 14臺主機
以第四段為例計算其兴,
其中子網(wǎng)個數(shù)為2^4=16個鞠抑,其中4表示借用第四段4個主機位
其中合法子網(wǎng)為:0 16 32 48 64 ...240總共16個
而IP地址100.0.0.16 在子網(wǎng)16中,
該子網(wǎng)的網(wǎng)絡(luò)地址為:100.0.0.16
廣播地址:100.0.0.31
可分配IP地址范圍是100.0.0.17-100.0.0.30這14個IP地址忌警。
網(wǎng)關(guān)地址為可分配IP地址范圍中的任意一個IP地址搁拙。
2、使用man手冊學習tcpdump的使用
tcpdump 是一個運行在命令行下的抓包工具法绵。它允許用戶攔截和顯示發(fā)送或收到過網(wǎng)絡(luò)連接到該計算機的TCP/IP和其他數(shù)據(jù)包箕速。tcpdump 適用于大多數(shù)的類Unix系統(tǒng)操作系統(tǒng)(如linux,BSD等)。
- tcpdump采用命令行方式朋譬,它的命令格式為:
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
[ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
[ -Q|-P in|out|inout ]
[ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
[ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
[ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
[ -Z user ] [ expression ] - 命令選項說明
-a #將網(wǎng)絡(luò)地址和廣播地址轉(zhuǎn)變成名字
-A #以ASCII格式打印出所有分組盐茎,并將鏈路層的頭最小化
-b #數(shù)據(jù)鏈路層上選擇協(xié)議,包括ip/arp/rarp/ipx都在這一層
-c #指定收取數(shù)據(jù)包的次數(shù)徙赢,即在收到指定數(shù)量的數(shù)據(jù)包后退出tcpdump
-d #將匹配信息包的代碼以人們能夠理解的匯編格式輸出
-dd #將匹配信息包的代碼以c語言程序段的格式輸出
-ddd #將匹配信息包的代碼以十進制的形式輸出
-D #打印系統(tǒng)中所有可以監(jiān)控的網(wǎng)絡(luò)接口
-e #在輸出行打印出數(shù)據(jù)鏈路層的頭部信息
-f #將外部的Internet地址以數(shù)字的形式打印出來字柠,即不顯示主機名
-F #從指定的文件中讀取表達式,忽略其他的表達式
-i #指定監(jiān)聽網(wǎng)絡(luò)接口
-l #使標準輸出變?yōu)榫彌_形式狡赐,可以數(shù)據(jù)導(dǎo)出到文件
-L #列出網(wǎng)絡(luò)接口已知的數(shù)據(jù)鏈路
-n #不把網(wǎng)絡(luò)地址轉(zhuǎn)換為名字
-N 不輸出主機名中的域名部分窑业,例如www.baidu.com只輸出www
-nn #不進行端口名稱的轉(zhuǎn)換
-P #不將網(wǎng)絡(luò)接口設(shè)置為混雜模式
-q #快速輸出,即只輸出較少的協(xié)議信息
-r #從指定的文件中讀取數(shù)據(jù)枕屉,一般是-w保存的文件
-w #將捕獲到的信息保存到文件中常柄,且不分析和打印在屏幕
-s #從每個組中讀取在開始的snaplen個字節(jié),而不是默認的68個字節(jié)
-S #將tcp的序列號以絕對值形式輸出搀擂,而不是相對值
-T #將監(jiān)聽到的包直接解析為指定的類型的報文西潘,常見的類型有rpc(遠程過程調(diào)用)和snmp(簡單網(wǎng)絡(luò)管理協(xié)議)
-t #在輸出的每一行不打印時間戳
-tt #在每一行中輸出非格式化的時間戳
-ttt #輸出本行和前面以后之間的時間差
-tttt #在每一行中輸出data處理的默認格式的時間戳
-u #輸出未解碼的NFS句柄
-v #輸出稍微詳細的信息,例如在ip包中可以包括ttl和服務(wù)類型的信息
-vv#輸出相信的報文信息
- tcpdump的表達式:
表達式是一個正則表達式哨颂,tcpdump利用它作為過濾報文的條件喷市,如果一個報文滿足表達式的條件,則這個報文將會被捕獲威恼。如果沒有給出任何條件品姓,則網(wǎng)絡(luò)上所有的信息包 將會被截獲,在表達式中一般如下幾種類型的關(guān)鍵字:- 關(guān)于數(shù)據(jù)類型的關(guān)鍵字:
包括host沃测、port缭黔、net,例如host 192.168.1.1表示這是一臺主機蒂破,net 192.168.0.0表示這是一個網(wǎng)絡(luò)地址,port 22指明端口號是22别渔,如果沒有指明類型附迷,則默認的類型是host惧互。 - 數(shù)據(jù)傳輸方向的關(guān)鍵字:
包括src、dst喇伯、dst or src喊儡、dst and src,這些關(guān)鍵字指明了傳輸?shù)姆较蚋钔保热鐂rc 192.168.1.1說明數(shù)據(jù)包源地址是192.168.1.1蕾域,dst net 192.168.0.0指明目的網(wǎng)絡(luò)地址是192.168.0.0宙橱,默認是監(jiān)控主機對主機的src和dst,即默認監(jiān)聽本機和目標主機的所有數(shù)據(jù)匆赃。 - 協(xié)議關(guān)鍵字:
包括ip、arp今缚、rarp算柳、tcp、udp等姓言, - 其他關(guān)鍵字:
運算類型的:or瞬项、and、not何荚、!
輔助功能型的:gateway囱淋、less、broadcast餐塘、greater
- 關(guān)于數(shù)據(jù)類型的關(guān)鍵字:
- tcpdump常用示例
下面所有測試中都有 -i any的選項绎橘,表示抓取所有網(wǎng)絡(luò)接口上的包,只是為了讓測試方便
//抓取arp協(xié)議的包唠倦,然后host為10.192.2.* 測試時需要在另一個session称鳞,做一個ifconfig指令
//arp可以換為tcp,udp等
[root@node01 ~]#tcpdump -i any -n arp host 10.192.2.222
15:36:51.821905 ARP, Request who-has 10.192.2.1 tell 10.192.2.222, length 28
15:36:51.822449 ARP, Reply 10.192.2.1 is-at 38:97:d6:f8:bd:33, length 46
//抓取訪問destination 80端口的包,然后我們做一個curl www.baidu.com的操作
[root@node01 ~]# tcpdump -i any -n dst port 80
15:39:01.369435 IP 10.192.2.222.47686 > 14.215.177.38.http: Flags [S], seq 819318323, win 29200, options [mss 1460,sackOK,TS val 2850464827 ecr 0,nop,wscale 7], length 0
15:39:01.376363 IP 10.192.2.222.47686 > 14.215.177.38.http: Flags [.], ack 1490870282, win 229, length 0
15:39:01.376479 IP 10.192.2.222.47686 > 14.215.177.38.http: Flags [P.], seq 0:77, ack 1, win 229, length 77: HTTP: GET / HTTP/1.1
15:39:01.386582 IP 10.192.2.222.47686 > 14.215.177.38.http: Flags [.], ack 1849, win 257, length 0
15:39:01.386637 IP 10.192.2.222.47686 > 14.215.177.38.http: Flags [.], ack 2782, win 277, length 0
15:39:01.386884 IP 10.192.2.222.47686 > 14.215.177.38.http: Flags [F.], seq 77, ack 2782, win 277, length 0
15:39:01.393760 IP 10.192.2.222.47686 > 14.215.177.38.http: Flags [.], ack 2783, win 277, length 0
//抓取源上端口是22的包
[root@node01 ~]# tcpdump -i any -n src port 22
15:42:01.250919 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 2151794643:2151794839, ack 2324872893, win 291, length 196
15:42:01.251262 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 196:376, ack 1, win 291, length 180
15:42:01.251447 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 376:540, ack 1, win 291, length 164
//抓取源或者目標端口都是22的包
[root@node01 ~]# tcpdump -i any -n port 22 -c
15:42:55.031581 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 2151796671:2151796867, ack 2324874073, win 291, length 196
15:42:55.031937 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 196:376, ack 1, win 291, length 180
15:42:55.032124 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 376:540, ack 1, win 291, length 164
//表示抓取destination prot 在1到80之間的端口的數(shù)據(jù),在另外的面做curl www.baidu.com
[root@node01 ~]# tcpdump -i any -n dst portrange 1-80
15:44:45.205605 IP 10.192.52.63.54158 > 10.192.2.222.ssh: Flags [P.], seq 0:52, ack 1629, win 253, length 52
15:44:45.216919 IP 10.192.2.222.59407 > 114.114.114.114.domain: 63614+ A? www.baidu.com. (31)
15:44:45.216943 IP 10.192.2.222.59407 > 114.114.114.114.domain: 39132+ AAAA? www.baidu.com. (31)
15:44:45.218231 IP 10.192.52.63.54158 > 10.192.2.222.ssh: Flags [.], ack 2073, win 252, length 0
15:44:45.244046 IP 10.192.2.222.47688 > 14.215.177.38.http: Flags [S], seq 36781375, win 29200, options [mss 1460,sackOK,TS val 2850808702 ecr 0,nop,wscale 7], length 0
15:44:45.245393 IP 10.192.52.63.54158 > 10.192.2.222.ssh: Flags [.], ack 2433, win 256, length 0
15:44:45.249647 IP 10.192.2.222.47688 > 14.215.177.38.http: Flags [.], ack 4195151903, win 229, length 0
15:44:45.249916 IP 10.192.2.222.47688 > 14.215.177.38.http: Flags [P.], seq 0:77, ack 1, win 229, length 77: HTTP: GET / HTTP/1.1
15:44:45.250800 IP 10.192.52.63.54158 > 10.192.2.222.ssh: Flags [.], ack 2729, win 255, length 0
15:44:45.252378 IP 10.192.52.63.54158 > 10.192.2.222.ssh: Flags [.], ack 3057, win 254, length 0
15:44:45.256963 IP 10.192.2.222.47688 > 14.215.177.38.http: Flags [.], ack 1449, win 251, length 0
15:44:45.257038 IP 10.192.2.222.47688 > 14.215.177.38.http: Flags [.], ack 2782, win 272, length 0
15:44:45.257363 IP 10.192.2.222.47688 > 14.215.177.38.http: Flags [F.], seq 77, ack 2782, win 272, length 0
//抓取源的端口是20-80的包
[root@node01 ~]# tcpdump -i any -n src portrange 20-80
15:48:25.510628 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 2152992151:2152992347, ack 2324881429, win 291, length 196
15:48:25.510960 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 196:376, ack 1, win 291, length 180
15:48:25.511157 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 376:540, ack 1, win 291, length 164
//抓取destination為www.baidu.com的包
[root@node01 ~]# tcpdump -i any dst www.baidu.com
15:50:06.569979 IP node01 > 14.215.177.39: ICMP echo request, id 5139, seq 16, length 64
15:50:07.571298 IP node01 > 14.215.177.39: ICMP echo request, id 5139, seq 17, length 64
//抓取destination為10.192.2.161的包
[root@node01 ~]# tcpdump -i any dst 10.192.2.161
15:52:02.265951 ARP, Request who-has 10.192.2.161 tell gateway, length 46
15:53:02.311727 ARP, Request who-has 10.192.2.161 tell gateway, length 46
//抓取包長度小于800的包
[root@node01 ~]# tcpdump -i any -n less 800
15:56:02.297070 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 196:376, ack 1, win 291, length 180
15:56:02.297252 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 376:540, ack 1, win 291, length 164
//抓取包長度大于800的包
[root@node01 ~]# tcpdump -i any -n greater 800
5:57:52.926274 IP 14.215.177.38.http > 10.192.2.222.47690: Flags [P.], seq 727058018:727059866, ack 3414192055, win 776, length 1848: HTTP: HTTP/1.1 200 OK
15:57:52.926352 IP 14.215.177.38.http > 10.192.2.222.47690: Flags [P.], seq 1848:2781, ack 1, win 776, length 933: HTTP
15:57:52.928952 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 2153586163:2153588631, ack 2324893229, win 291, length 2468
//只抓取tcp包
[root@node01 ~]# tcpdump -i any -n tcp
15:58:59.096035 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 196:376, ack 1, win 291, length 180
15:58:59.096253 IP 10.192.2.222.ssh > 10.192.52.63.54158: Flags [P.], seq 376:540, ack 1, win 291, length 164
//只抓取udp包
[root@node01 ~]# tcpdump -i any -n udp
15:59:54.956283 IP 10.192.2.126.netbios-dgm > 10.192.2.255.netbios-dgm: NBT UDP PACKET(138)
//只抓取icmp的包,ping命令
[root@node01 ~]# tcpdump -i any -n icmp
16:00:40.899281 IP 10.192.2.222 > 14.215.177.38: ICMP echo request, id 5160, seq 1, length 64
16:00:40.905691 IP 14.215.177.38 > 10.192.2.222: ICMP echo reply, id 5160, seq 1, length 64
16:00:41.900451 IP 10.192.2.222 > 14.215.177.38: ICMP echo request, id 5160, seq 2, length 64
3稠鼻、詳細敘述僵尸進程產(chǎn)生的原因以及危害
- 僵尸進程簡介
在linux系統(tǒng)中冈止,當用ps命令觀察進程的執(zhí)行狀態(tài)時,經(jīng)澈虺荩看到某些進程的狀態(tài)欄為defunct熙暴,這就是所謂的“僵尸”進程』哦ⅲ“僵尸”進程是一個早已死亡的進程周霉,但在進程表(processs table)中仍占了一個位置(slot)。由于進程表的容量是有限的亚皂,所以俱箱,defunct進程不僅占用系統(tǒng)的內(nèi)存資源,影響系統(tǒng)的性能灭必,而且如果其數(shù)目太多狞谱,還會導(dǎo)致系統(tǒng)癱瘓乃摹。 - 僵尸進程的產(chǎn)生原因
我們知道,每個進程在進程表里都有一個進入點(entry)跟衅,核心程序執(zhí)行該進程時使用到的一切信息都存儲在進入點孵睬。當用ps命令察看系統(tǒng)中的進程信息時,看到的就是進程表中的相關(guān)數(shù)據(jù)伶跷。所以掰读,當一個父進程以fork()系統(tǒng)調(diào)用建立一個新的子進程后,核心進程就會在進程表中給這個子進程分配一個進入點叭莫,然后將相關(guān)信息存儲在該進入點所對應(yīng)的進程表內(nèi)蹈集。這些信息中有一項是其父進程的識別碼。而當這個子進程結(jié)束的時候(比如調(diào)用exit命令結(jié)束)食寡,其實他并沒有真正的被銷毀雾狈,而是留下一個稱為僵尸進程(Zombie)的數(shù)據(jù)結(jié)構(gòu)(系統(tǒng)調(diào)用exit的作用是使進程退出,但是也僅僅限于一個正常的進程變成了一個僵尸進程抵皱,并不能完全將其銷毀)善榛。此時原來進程表中的數(shù)據(jù)會被該進程的退出碼(exit code)、執(zhí)行時所用的CPU時間等數(shù)據(jù)所取代呻畸,這些數(shù)據(jù)會一直保留到系統(tǒng)將它傳遞給它的父進程為止移盆。由此可見,defunct進程的出現(xiàn)時間是在子進程終止后伤为,但是父進程尚未讀取這些數(shù)據(jù)之前咒循。此時,該僵尸子進程已經(jīng)放棄了幾乎所有的內(nèi)存空間绞愚,沒有任何可執(zhí)行代碼叙甸,也不能被調(diào)度,僅僅在進程列表中保留一個位置位衩,記載該進程的退出狀態(tài)信息供其他進程收集裆蒸,除此之外,僵尸進程不再占有任何存儲空間糖驴。他需要他的父進程來為他收尸僚祷,如果他的父進程沒有安裝SIGCHLD信號處理函數(shù)調(diào)用wait 或 waitpid() 等待子進程結(jié)束,也沒有顯式忽略該信號贮缕,那么它就一直保持僵尸狀態(tài)辙谜,如果這時候父進程結(jié)束了,那么init進程會自動接手這個子進程感昼,為他收尸装哆,他還是能被清除掉的。但是如果父進程是一個循環(huán),不會結(jié)束烂琴,那么子進程就會一直保持僵尸狀態(tài)爹殊,這就是系統(tǒng)中為什么有時候會有很多的僵尸進程蜕乡。 - 如何殺死僵尸進程
- 重啟服務(wù)器電腦奸绷,這個是最簡單,最易用的方法层玲,但是如果你服務(wù)器電腦上運行有其他的程序号醉,那么這個方法,代價很大辛块。
- 找到該defunct僵尸進程的父進程畔派,將該進程的父進程殺掉,則此defunct進程將自動消失
命令: ps -ef | grep defunct_process_pid
- 如何預(yù)防僵尸進程
- 在父進程創(chuàng)建子進程之前润绵,就向系統(tǒng)申明自己并不會對這個子進程的exit動作進行任何關(guān)注行為线椰,這樣的話,子進程一旦退出后尘盼,系統(tǒng)就不會去等待父進程的操作憨愉,而是直接將該子進程的資源回收掉,也就不會出現(xiàn)僵尸進程了卿捎。具體的辦法就是配紫,在父進程的初始化函數(shù)中,調(diào)用這個函數(shù):signal(SIGCHLD,SIG_IGN)午阵;
- 如果上述語句沒來得及調(diào)用躺孝,也有另外一個辦法。那就是在創(chuàng)建完子進程后底桂,用waitpid等待子進程返回植袍,也能達到上述效果;
- 如果上述兩個辦法都不愿意采用籽懦,那還有一招:在父進程創(chuàng)建子進程的時候于个,連續(xù)調(diào)用兩次fork(),而且使緊跟的子進程直接退出猫十,使其孫子進程成為孤兒進程览濒,從而init進程將代替父進程來接手,負責清除這個孤兒進程拖云。于是贷笛,父進程就無需進行任何的清理行為,系統(tǒng)會自動處理宙项;
4乏苦、詳細說明vmstat輸出結(jié)果的含義
vmstat命令: 用來獲得有關(guān)進程、虛存、頁面交換空間及 CPU活動的信息汇荐。這些信息反映了系統(tǒng)的負載情況洞就。
- 虛擬內(nèi)存運行原理
在系統(tǒng)中運行的每個進程都需要使用到內(nèi)存,但不是每個進程都需要每時每刻使用系統(tǒng)分配的內(nèi)存空間掀淘。當系統(tǒng)運行所需內(nèi)存超過實際的物理內(nèi)存旬蟋,內(nèi)核會釋放某些進程所占用但未使用的部分或所有物理內(nèi)存,將這部分資料存儲在磁盤上直到進程下一次調(diào)用革娄,并將釋放出的內(nèi)存提供給有需要的進程使用倾贰。在Linux內(nèi)存管理中,主要是通過“調(diào)頁Paging”和“交換Swapping”來完成上述的內(nèi)存調(diào)度拦惋。調(diào)頁算法是將內(nèi)存中最近不常使用的頁面換到磁盤上匆浙,把活動頁面保留在內(nèi)存中供進程使用。交換技術(shù)是將整個進程厕妖,而不是部分頁面首尼,全部交換到磁盤上。分頁(Page)寫入磁盤的過程被稱作Page-Out言秸,分頁(Page)從磁盤重新回到內(nèi)存的過程被稱作Page-In软能。當內(nèi)核需要一個分頁時,但發(fā)現(xiàn)此分頁不在物理內(nèi)存中(因為已經(jīng)被Page-Out了)井仰,此時就發(fā)生了分頁錯誤(Page Fault)埋嵌。當系統(tǒng)內(nèi)核發(fā)現(xiàn)可運行內(nèi)存變少時,就會通過Page-Out來釋放一部分物理內(nèi)存俱恶。經(jīng)管Page-Out不是經(jīng)常發(fā)生雹嗦,但是如果Page-out頻繁不斷的發(fā)生,直到當內(nèi)核管理分頁的時間超過運行程式的時間時合是,系統(tǒng)效能會急劇下降了罪。這時的系統(tǒng)已經(jīng)運行非常慢或進入暫停狀態(tài),這種狀態(tài)亦被稱作thrashing(顛簸)聪全。 - vmstat常用用法組合
vmstat [options] [delay [count]]
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V] - 選項說明
-a:顯示活躍和非活躍內(nèi)存
-f:顯示從系統(tǒng)啟動至今的fork數(shù)量 泊藕。
-m:顯示slabinfo
-n:只在開始時顯示一次各字段名稱。
-s:顯示內(nèi)存相關(guān)統(tǒng)計信息及多種系統(tǒng)活動數(shù)量难礼。
delay:刷新時間間隔娃圆。如果不指定,只顯示一條結(jié)果蛾茉。
count:刷新次數(shù)讼呢。如果不指定刷新次數(shù),但指定了刷新時間間隔谦炬,這時刷新次數(shù)為無窮悦屏。
-d:顯示磁盤相關(guān)統(tǒng)計信息节沦。
-p:顯示指定磁盤分區(qū)統(tǒng)計信息
-S:使用指定單位顯示。參數(shù)有 k 础爬、K 甫贯、m 、M 看蚜,分別代表1000叫搁、1024、1000000失乾、1048576字節(jié)(byte)常熙。默認單位為K(1024 bytes)
-V:顯示vmstat版本信息纬乍。 - 根據(jù)示例進行字段說明
[root@node01 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1135388 6332 2578060 0 0 0 1 4 5 0 0 100 0 0
0 0 0 1135372 6332 2578060 0 0 0 0 98 81 0 0 100 0 0
0 0 0 1135372 6332 2578060 0 0 0 0 86 72 0 0 100 0 0
0 0 0 1135372 6332 2578060 0 0 0 0 92 74 0 0 100 0 0
0 0 0 1135372 6332 2578060 0 0 0 0 83 72 0 0 100 0 0
- procs
r等待執(zhí)行的任務(wù)數(shù) 說明:展示了正在執(zhí)行和等待cpu資源的任務(wù)個數(shù)碱茁。當這個值超過了cpu個數(shù),就會出現(xiàn)cpu瓶頸
b等待IO的進程數(shù)量
- memory
swpd正在使用虛擬的內(nèi)存大小仿贬,單位k
free空閑內(nèi)存大小
buff已用的buff大小纽竣,對塊設(shè)備的讀寫進行緩沖
cache已用的cache大小,文件系統(tǒng)的cache
inact非活躍內(nèi)存大小茧泪,即被標明可回收的內(nèi)存蜓氨,區(qū)別于free和active
active活躍的內(nèi)存大小
- swap
si每秒從交換區(qū)寫入內(nèi)存的大小(單位:kb/s)
so每秒從內(nèi)存寫到交換區(qū)的大小
- io
bi每秒讀取的塊數(shù)(讀磁盤)
bo每秒寫入的塊數(shù)(寫磁盤)
- system
in每秒中斷數(shù)队伟,包括時鐘中斷
cs每秒上下文切換數(shù)
- cpu
us用戶進程執(zhí)行消耗cpu時間(user time)
sy系統(tǒng)進程消耗cpu時間(system time)
id空閑時間(包括IO等待時間)
wa等待IO時間
st從虛擬機竊取的時間
- 常見問題處理
如果r經(jīng)常大于4穴吹,且id經(jīng)常少于40,表示cpu的負荷很重嗜侮。
如果si港令,so長期不等于0,表示內(nèi)存不足锈颗。
如果wa經(jīng)常不等于0顷霹,且在b中的隊列大于3,表示io性能不好击吱。
如果在processes中運行的序列(process r)是連續(xù)的大于在系統(tǒng)中的CPU的個數(shù)表示系統(tǒng)現(xiàn)在運行比較慢,有多數(shù)的進程等待CPU淋淀。
如果r的輸出數(shù)大于系統(tǒng)中可用CPU個數(shù)的4倍的話,則系統(tǒng)面臨著CPU短缺的問題,或者是CPU的速率過低,系統(tǒng)中有多數(shù)的進程在等待CPU,造成系統(tǒng)中進程運行過慢。
如果空閑時間(cpu id)持續(xù)為0并且系統(tǒng)時間(cpu sy)是用戶時間的兩倍(cpu us)系統(tǒng)則面臨著CPU資源的短缺覆醇。
解決辦法:
當發(fā)生以上問題的時候請先調(diào)整應(yīng)用程序?qū)PU的占用情況.使得應(yīng)用程序能夠更有效的使用CPU.同時可以考慮增加更多的CPU. 關(guān)于CPU的使用情況還可以結(jié)合mpstat, ps aux top prstat –a等等一些相應(yīng)的命令來綜合考慮關(guān)于具體的CPU的使用情況,和那些進程在占用大量的CPU時間.一般情況下朵纷,應(yīng)用程序的問題會比較大一些.比如一些sql語句不合理等等都會造成這樣的現(xiàn)象.內(nèi)存問題現(xiàn)象:
內(nèi)存的瓶頸是由scan rate (sr)來決定的.scan rate是通過每秒的始終算法來進行頁掃描的.如果scan rate(sr)連續(xù)的大于每秒200頁則表示可能存在內(nèi)存缺陷.同樣的如果page項中的pi和po這兩欄表示每秒頁面的調(diào)入的頁數(shù)和每秒調(diào)出的頁數(shù).如果該值經(jīng)常為非零值,也有可能存在內(nèi)存的瓶頸,當然,如果個別的時候不為0的話,屬于正常的頁面調(diào)度這個是虛擬內(nèi)存的主要原理.
解決辦法:
1.調(diào)節(jié)applications & servers使得對內(nèi)存和cache的使用更加有效.
2.增加系統(tǒng)的內(nèi)存.
關(guān)于內(nèi)存的使用情況還可以結(jié)ps aux top prstat –a等等一些相應(yīng)的命令來綜合考慮關(guān)于具體的內(nèi)存的使用情況,和那些進程在占用大量的內(nèi)存.一般情況下,如果內(nèi)存的占用率比較高,但是,CPU的占用很低的時候,可以考慮是有很多的應(yīng)用程序占用了內(nèi)存沒有釋放,但是,并沒有占用CPU時間,可以考慮應(yīng)用程序,對于未占用CPU時間和一些后臺的程序,釋放內(nèi)存的占用永脓。