監控io性能
iostat檢視磁盤情況(需要安裝sysstat包)
可以直接運作該指令
iostat
或者後面加一個1,就是動态顯示。
iostat 1
iostat和iostat 1所表現出來的東西,用sar都可以展現出來,但是用iostat -x 就無法使用sar展現出來
iostat -x
iostat -x有個非常重要的名額,%util,表示磁盤有多少時間占用cpu時間比,等待io時間占比,等待磁盤讀寫時間占總時間的比例。
如果這一列的數字很大,50或者60,并且wkb/s列也很大那就說明磁盤io比較大比較忙,但是如果wkb/s列并不大,那麼就說明磁盤出故障了。
硬碟慢就會影響系統的性能。
iotop 檢視具體程序讀寫磁盤情況,和top指令很像(需要安裝iotop)
yum install -y iotop
Total DISK WRITE 寫入速度
Actual DISK WRITE 讀取速度
我們主要檢視IO這一列
iotop
free指令
free檢視記憶體使用情況
free
第一行說明、第二行是記憶體使用情況、第三行是交換分區。
第一列 total 是總大小(預設機關是kb,可以使用-m指定機關為兆,或者使用-h使用适當的機關)、第二列 used 是已使用的,第三列 free 是剩餘的、第四列 shared 是共享的、第五列 buff/cache、第六列available。
系統會把記憶體預留一點給buff/cache(buff是緩沖、cache是緩存)
free檢視記憶體使用情況主要看的就是avaliable。
ps指令
ps檢視程序
ps aux (靜态的列出系統所有程序)
ps aux
從前向後分别是 運作使用者、pid、cpu占用、記憶體占用、虛拟記憶體、實體記憶體、tty、stat(程序的狀态)、什麼時候啟動的、運作了多久了、指令。
pid我們會在想要結束一個程序的時候使用,比如我們想要結束2086,那就使用kill 2086(2086為這個程序的pid)
kill 2086
然後我們使用管道符檢視剛才結束的程序2086是否還存在(剛才結束程序前,我們得知該程序為top)
ps aux |grep top
我們要關注STAT(程序的狀态)。
STAT(程序的狀态)有:
D不能中斷。
R(run)正在跑的程序(在一個時間段内使用cpu)。
S(sleep)程序運算完可能會暫停一下,過會會激活
T暫停的程序(ctrl+z暫停的程序)
+前台程序
Z僵屍程序
<高優先級的程序(cpu優先處理)
N低優先級
L記憶體中被鎖了記憶體分頁的
s主程序
L多線程程序
ps aux用法:檢視某個程序有沒有在運作(上面已經使用過一次了),檢視top是否在運作
ps aux |grep top
檢視網絡狀态
netstat檢視網絡狀态(tcp/ip通信狀态)
netstat -lnp 檢視監聽端口(使用者和伺服器通信需要端口)
netstat -lnp
像tcp6,udp6 這樣後面加6的,就是ipv6的端口,沒有加的如tcp,udp 就是ipv4的端口
STREAM内部通信
檢視tcp/ip狀态
netstat -an
隻檢視tcp以及tcp6的端口
netstat -ltnp
隻檢視tcp以及tcp6以及udp端口
netstat -ltunp
TIME_WAIT狀态:用戶端和服務端兩個機器互相通信之後它們的連結還沒有斷開,處于一種等待的狀态,等待下次這兩台機器再次連接配接傳輸資料。
檢視各個狀态的個數指令
netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
我們主要關注ESTABLISHED,這個數字如果很大說明你的系統很忙,(并發連接配接數,在這個時間内有多少個用戶端在和服務端通信)一般一千以内
ss -an和netstat相似,不過不顯示程序名
ss -an
檢視LISTEN一列
ss -an |grep -i listen
linux下抓包
tcpdump抓包工具(如果沒有需要安裝tcpdump包)
yum install -y tcpdump
指定網卡抓包
tcpdump -nn -i ens33
-nn表示ip用數字的形式表示出來,如果不加會顯示主機名。
tcpdump -i ens33
第一列往後分别是時間、源ip、端口、到哪個ip去、端口、包的資訊。
我們主要關注源IP、端口和目标IP、端口。看資料的流向。
有時候也要看length(長度),如下圖
指定端口(porn指定,22端口 可修改為任意端口)
tcpdump -nn -i ens33 port 22
排除寫法,排除22端口(not 去除此端口)
tcpdump -nn -i ens33 not port 22
排除22端口并指定ip
tcpdump -nn -i ens33 not port 22 and host 192.168.71.131
指定抓的包個數(-c 指定數字)
tcpdump -nn -i ens33 -c 10
指定抓包數,并将結果存到指定檔案裡去,(這個檔案cat不了,使用file可檢視大概資訊)
tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap
檢視資料流
tcpdump -r /tmp/1.cap
tshark抓包工具類似于tcpdump(需要安裝wireshark包)
yum install -y wireshark
檢視指定網卡80端口的wap通路的情況(由于虛拟機沒運作任何80端口程式,是以這條指令暫時無法使用)
tahark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
這樣檢視可以看到有哪些IP通路我的80端口網站,通路的哪個位置,通過什麼連結進來的