1. 程式人生 > >Linux學習筆記(三十)日常運維二

Linux學習筆記(三十)日常運維二

free

一、iostat、free
iostat -x 磁盤使用
技術分享圖片
rrqm/s: 每秒進行 merge 的讀操作數目。即 delta(rmerge)/s
wrqm/s: 每秒進行 merge 的寫操作數目。即 delta(wmerge)/s
r/s: 每秒完成的讀 I/O 設備次數。即 delta(rio)/s
w/s: 每秒完成的寫 I/O 設備次數。即 delta(wio)/s
rsec/s: 每秒讀扇區數。即 delta(rsect)/s
wsec/s: 每秒寫扇區數。即 delta(wsect)/s
rkB/s: 每秒讀K字節數。是 rsect/s 的一半,因為每扇區大小為512字節。(需要計算)
wkB/s: 每秒寫K字節數。是 wsect/s 的一半。(需要計算)
avgrq-sz: 平均每次設備I/O操作的數據大小 (扇區)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O隊列長度。即 delta(aveq)/s/1000 (因為aveq的單位為毫秒)。
await: 平均每次設備I/O操作的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次設備I/O操作的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的。即 delta(use)/s/1000 (因為use的單位為毫秒)
如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。

iotop 磁盤使用
yum install -y iotop
技術分享圖片

free 查看內存使用情況
-b:以Byte為單位顯示內存使用情況;
-k:以KB為單位顯示內存使用情況;
-m:以MB為單位顯示內存使用情況;
-o:不顯示緩沖區調節列;
-s<間隔秒數>:持續觀察內存使用狀況;
-t:顯示內存總和列;
-V:顯示版本信息。

buffer/cache區別
公式:total=used+free+buff/cache
avaliable包含free和buffer/cache剩余部分
0000(磁盤)--》內存(cache )---》cpu //緩存

0000(cpu)--》內存(buff)--》磁盤 //緩沖
二、ps
ps 查看系統進程
用法:ps aux、ps -elf
技術分享圖片

技術分享圖片
ps aux | grep mysql 查看mysql的進程
STAT部分說明
D 不能中斷的進程
R run狀態的進程
S sleep狀態的進程
T 暫停的進程
Z 僵屍進程
< 高優先級進程
N 低優先級進程
L 內存中被鎖了內存分頁
s 主進程
l 多線程進程

  • 前臺進程

ls -l /proc/進程號/ 查看進程所在的位置
線程與進程

線程的出現是為了降低上下文切換的消耗,提高系統的並發性,並突破一個進程只能幹一樣事的缺陷,使到進程內並發成為可能。

假設,一個文本程序,需要接受鍵盤輸入,將內容顯示在屏幕上,還需要保存信息到硬盤中。若只有一個進程,勢必造成同一時間只能幹一樣事的尷尬(當保存時,就不能通過鍵盤輸入內容)。若有多個進程,每個進程負責一個任務,進程A負責接收鍵盤輸入的任務,進程B負責將內容顯示在屏幕上的任務,進程C負責保存內容到硬盤中的任務。這裏進程A,B,C間的協作涉及到了進程通信問題,而且有共同都需要擁有的東西——-文本內容,不停的切換造成性能上的損失。若有一種機制,可以使任務A,B,C共享資源,這樣上下文切換所需要保存和恢復的內容就少了,同時又可以減少通信所帶來的性能損耗,那就好了。是的,這種機制就是線程。
線程也叫輕量級進程,它是一個基本的CPU執行單元,也是程序執行過程中的最小單元,由線程ID、程序計數器、寄存器集合和堆棧共同組成。線程的引入減小了程序並發執行時的開銷,提高了操作系統的並發性能。線程沒有自己的系統資源。
進程是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。或者說進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。
線程則是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
進程和線程的關系:
(1)一個線程只能屬於一個進程,而一個進程可以有多個線程,但至少有一個線程。
(2)資源分配給進程,同一進程的所有線程共享該進程的所有資源。
(3)CPU分給線程,即真正在CPU上運行的是線程。
三、查看網絡狀態

netstat 查看網絡狀態
netstat -lnp 查看監聽端口
技術分享圖片
netstat -an 查看系統的網絡連接狀況
技術分享圖片
netstat -lntp 只看出tcp的,不包含socket
技術分享圖片
ss -an 和nestat異曲同工 但是ss不顯示進程名字
分享一個小技巧:

 netstat -an | awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}‘

查看各種狀態的有多少個
ESTABLISHED 需要特別關註,如果特別大,就說明系統繁忙
技術分享圖片
tcp與udp區別與介紹
http://blog.csdn.net/li_ning_/article/details/52117463
tcp的三次握手與四次分手
https://www.cnblogs.com/leezhxing/p/4524176.html

四、抓包

yum install -y tcpdump
抓包工具tcpdump
 用法:tcpdump -nn
 tcpdump -nn -i ens33 
 tcpdump -nn port 80     //指定端口80
 tcpdump -nn not port 22 and host 192.168.0.100  //指定host和端口不是22
tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap   //  抓10個包放入1.cap中,可以用file命令查看信息
tcpdump -r   /tmp/1.cap  //讀取抓到的包信息
 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" 
 yum install -y wireshark

tcpdump -nn -i ens33
第一個n是ip,第二個n是端口號
不寫n就顯示主機名和ssh
技術分享圖片

技術分享圖片

Linux學習筆記(三十)日常運維二