有時候查看到的cpu和內存還有剩餘,可是系統負載仍是很高,咱們用vmstat命令查看發現b列或wa列值比較大,說明系統磁盤有瓶頸,這時候就須要去查看磁盤的狀態了ios
一、iostat nginx
安裝sysstat時已經安裝了iostat命令web
二、iostat 1緩存
每隔1秒展現一次,服務器
三、iostat -x 1網絡
加上-x選項指標會更多,其中一個比較重要的是%util,這個指標表明的是cpu等待io進程的時間比例,若是這個值很大,說明磁盤io很忙,則讀寫rkB/s wkB/s 也會很大,若是讀寫值不大,則說明磁盤有問題或故障多線程
四、iotopsocket
1)安裝tcp
# yum install -y iotop工具
2) # iotop
將磁盤使用狀況根據佔用IO的比例大小排序後展現出來
一、# free
上圖中的total=used+free+buff/cache,available包含了free和buff/cache剩餘部分
buff:緩衝,當cpu寫數據到磁盤時,被暫放在內存中 的數據
cache:緩存,當cpu從磁盤讀取數據時,被暫放在內存中的數據
一、ps
1次性地將當前進程的使用情況列出來
二、# ps aux
能夠列出系統全部的進程
其中
VSZ表示虛擬內存;
RSS表示物理內存;
STAT有不少種狀態,
D表示不能中斷的進程
R表示run狀態的進程
S表示sleep狀態的進程
T表示暫停的進程
+表示前臺進程
Z表示殭屍進程
<表示高優先級進程
N表示低優先級進程
s表示主進程
l表示多線程進程
L表示內存中被鎖了內存分頁
ps aux用途:檢查某個進程有沒有,使用命令 # ps aux |grep nginx
三、# ps -elf
四、# ls -l /proc/進程號
使用上述命令能夠查看某個進程的啓動位置,以下圖
一、查看監聽端口
# netstat -lnp
l表示listen
同一臺服務器的兩個進程間使用socket協議通訊
# netstat -lntp //只查看tcp協議端口狀態
# netstat -lntup //查看tcp/upd協議端口狀態
二、# netstat -an //查看全部的鏈接狀態
查閱資料:TCP/IP的三次握手和四次揮手
三、統計各類狀態的數量
# netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
若是處於ESTABLISHED的狀態不少,說明系統很忙,通常1000之內 的數字服務器都可以接受,若是幾萬個
四、# ss -an //用這個命令查看網絡狀態時不會顯示進程的名字和PID
抓包工具:tcpdump
一、# tcpdump -nn
若是出現上圖狀況,說明網卡名字比較特殊,須要在命令中指定網卡名字
# tcpdump -nn -i 網卡名字
命令中的兩個n表示將下圖中的第一IP和端口以數字的方式展現出來,不指定的話會顯示爲主機名和端口名稱
上圖中咱們主要查看的是兩個IP間數據的流向和length,通常咱們看到的包都是TCP的包,若是看到UDP的包,頗有多是被攻擊了
二、# tcpdump -nn port 端口號 //抓取指定端口號
三、# tcpdump -nn not port 端口號 //不抓取指定端口號
四、指定包的長度
# tcpdump -nn -c 長度值
五、將抓取到的數據存儲到指定文件-w
# tcpdump -nn -w /tmp/1.cap
1.cap文件是不能直接cat的,不然會亂碼,由於這個文件是從服務器網卡中捕獲的數據包,就是咱們真正通訊的數據,若是想查看這個文件,使用命令# tcpdump -r /tmp/1.cap
五、tshark命令
先要安裝# yum install wireshark 工具
wireshark工具和tcpdump工具相似,wireshark就有一個tshark命令
使用下述命令能夠查看80端口web的訪問狀況
# tshark -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"