1. 程式人生 > >監控io性能

監控io性能

顯示時間 images req 顯示緩沖區 tcp 轉譯 數據 .html 執行

命令:
iostat
語法:
tcpdump(選項)
命令選項:
-x(目前只需要用到這個參數)
具體用法:
[root@ymh-01 ~]# iostat -x 1
技術分享圖片只需要關註此項即可
%util列意義為:磁盤使用占用CPU時間比,這個比值越低越好。
命令:
iotop
描述:
查看當前在占用IO的進程
用法:
直接執行命令,高亮條下即是IO占比情況
技術分享圖片
二、free
命令描述:
查看內存使用情況
語法:
free(選項)
選項:
-b:以Byte為單位顯示內存使用情況;
-k:以KB為單位顯示內存使用情況;
-m:以MB為單位顯示內存使用情況;
-o:不顯示緩沖區調節列;
-s<間隔秒數>:持續觀察內存使用狀況;
-t:顯示內存總和列;
-V:顯示版本信息。
-h:在數值後加上單位
用法及列信息:
直接執行或加上想要加入的參數:
[root@ymh-01 ~]# free -h
技術分享圖片
第一列,內存總大小 =total=used+free+buff/cache

第二列使用情況

第三列剩余大小

第四列共享大小

第五列緩沖緩存大小

Buffer/cache含義: 0000(磁盤) -->內存(cache)-->cpu
cpu(0000) -->內存(buffer) -->磁盤
第六列包含free和buffer/cache剩余部分(重要)

三、ps
命令描述:
ps命令用於報告當前系統的進程狀態。可以搭配kill指令隨時中斷、刪除不必要的程序。ps命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的。

命令主要參數:
ps -aux 將當前系統所有進程列出
ps -elf 把系統所有進程列出(兩種方法用法基本相同 ,我們這裏用ps –aux,較為直觀)
拓展:檢查當前系統有沒有某個進程
如檢查當前系統有沒有mysql進程
ps aux |grep mysql
用法及列信息:
[root@ymh-01 ~]# ps -aux
技術分享圖片
第一列進程用戶,是哪位用戶啟動的該進程:

第二列PID進程ID,殺死進程時直接輸入進程ID,如:kill 1,殺死PID為1的進程

第三列:cpu百分比,該進程占用CPU%

第四列:內存百分比,該進程占用內存%

第五列:虛擬內存

第六列:物理內存

第七列:該進程在哪個TTY上

第八列:(需要關註)進程的狀態

註:字符所代表的含義:
D:不能中斷的進程(占用系統負載高,但占用CPU不高)
R:run(正在跑的進程)狀態的進程,某個時間段內使用cpu
S:sleep(運算完數據後暫時休息,過會激活繼續使用cpu)狀態進程
T:暫停的進程
Z:僵屍進程
<:高優先級的進程
N:低優先級進程
L:內存中被鎖了內存分頁(了解即可)
s:主進程
l:多線程進程(線程由一個大進程組成,一個進程裏有多個線程)
線程進程擴展:
http://blog.csdn.net/lycyl/article/details/51178334
+:前臺進程
第九列:該進程啟動時間

第十列:該進程運行了多久

第十一列:是由什麽命令啟動該進程

四:netstat
命令描述:
查看網絡狀態
常用用法:
netstat -lnp:查看監聽端口
netstat -an:查看系統的網絡連接狀況(查看所有連接)
netstat -lntp:只看tcp的,不包含socket
ss -an和netstat異曲同工
netstat -an | awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}‘
五、tcpdump命令
命令描述:
tcpdump命令是一款sniffer工具,它可以打印所有經過網絡接口的數據包的頭信息,也可以使用-w選項將數據包保存到文件中,方便以後分析。
語法:
tcpdump(選項)
選項:
-a:嘗試將網絡和廣播地址轉換成名稱;
-c<數據包數目>:收到指定的數據包數目後,就停止進行傾倒操作;
-d:把編譯過的數據包編碼轉換成可閱讀的格式,並傾倒到標準輸出;
-dd:把編譯過的數據包編碼轉換成C語言的格式,並傾倒到標準輸出;
-ddd:把編譯過的數據包編碼轉換成十進制數字的格式,並傾倒到標準輸出;
-e:在每列傾倒資料上顯示連接層級的文件頭;
-f:用數字顯示網際網絡地址;
-F<表達文件>:指定內含表達方式的文件;
-i<網絡界面>:使用指定的網絡截面送出數據包;
-l:使用標準輸出列的緩沖區;
-n:不把主機的網絡地址轉換成名字;
-N:不列出域名;
-O:不將數據包編碼最佳化;
-p:不讓網絡界面進入混雜模式;
-q :快速輸出,僅列出少數的傳輸協議信息;
-r<數據包文件>:從指定的文件讀取數據包數據;
-s<數據包大小>:設置每個數據包的大小;
-S:用絕對而非相對數值列出TCP關聯數;
-t:在每列傾倒資料上不顯示時間戳記;
-tt: 在每列傾倒資料上顯示未經格式化的時間戳記;
-T<數據包類型>:強制將表達方式所指定的數據包轉譯成設置的數據包類型;
-v:詳細顯示指令執行過程;-vv:更詳細顯示指令執行過程;
-x:用十六進制字碼列出數據包資料;
-w<數據包文件>:把數據包數據寫入指定的文件。
用法:
tcpdump –nn(最常用)查看數據包流向情況
tcpdump -nn -i ens33 指定網卡
tcpdump -nn port 80指定端口
tcpdump -nn not port 22 and host 192.168.0.100排除法,命令含義為,不顯示端口為22,和只顯示host為192.168.0.100的包
tcpdump -nn -c 100 -w 1.cap 指定長度,並儲存到指定 文件
可以用file命令查看改文件
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"
執行tshark 命令需要安裝wireshark
yum install -y wireshark
可以查看指定網卡,80端口的一個web訪問情況
擴展:
tshark幾個用法:http://www.aminglinux.com/bbs/thread-995-1-1.html
tcp三次握手四次揮手:
http://www.doc88.com/p-9913773324388.html

監控io性能