10.6 監控io性能html
10.7 free命令linux
10.8 ps命令ios
10.9 查看網絡狀態web
10.10 linux下抓包緩存
擴展tcp三次握手四次揮手 http://www.doc88.com/p-9913773324388.html服務器
tshark幾個用法:http://www.aminglinux.com/bbs/thread-995-1-1.html網絡
iostat和sar屬於同一個軟件包,命令被用於監視系統輸入輸出設備和CPU的使用狀況。它的特色是彙報磁盤活動統計狀況,同時也會彙報出CPU使用狀況。同vmstat同樣,iostat也有一個弱點,就是它不能對某個進程進行深刻分析,僅對系統的總體狀況進行分析。多線程
[root@adai003 ~]# iostat -x Linux 3.10.0-514.el7.x86_64 (adai003) 2017年07月11日 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.12 0.00 0.24 0.25 0.00 99.39 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.06 0.45 0.30 16.50 4.06 54.39 0.02 31.35 32.52 29.60 6.25 0.47 scd0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 170.45 170.45 0.00 170.45 0.01
說明: util%:表示io等待佔比,正常狀況下該值和磁盤讀寫(r/w)成正比,若是該值很大,讀寫數值很小則說明磁盤存在問題,系統性能會受影響!併發
iotop命令是一個用來監視磁盤I/O使用情況的top類工具(動態)。iotop具備與top類似的UI,其中包括PID、用戶、I/O、進程等相關信息。Linux下的IO統計工具如iostat,nmon等大多數是隻能統計到設備的讀寫狀況,若是你想知道每一個進程是如何使用IO的就比較麻煩,使用iotop命令能夠很方便的查看。dom
[root@axiang ~]# iotop Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 2342 be/4 root 0.00 B/s 0.00 B/s 0.00 % 1.00 % [kworker/0:1] 512 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd-logind 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd -~rialize 21 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] ...
iotop經常使用快捷鍵
free命令能夠顯示當前系統未使用的和已使用的內存數目,還能夠顯示被內核使用的內存緩衝區。
經常使用選項:
[root@axiang-02 ~]# free -h total used free shared buff/cache available Mem: 1.8G 577M 918M 8.6M 335M 1.1G Swap: 2.0G 0B 2.0G
可用available=空閒free+緩衝、緩存
內存總大小total=已用used+可用available
buff緩衝和cache緩存區別,所指流向不一樣
若是佔用swap表明內存不夠或者程序致使內存泄漏,須要排查或添加內存
ps命令用於報告當前系統的進程狀態。能夠搭配kill指令隨時中斷、刪除沒必要要的程序。ps命令是最基本同時也是很是強大的進程查看命令,使用該命令能夠肯定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等,總之大部分信息都是能夠經過執行該命令獲得的。
[root@adai003 ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 125100 3628 ? Ss 10:28 0:01 /usr/lib/systemd/systemd root 2 0.0 0.0 0 0 ? S 10:28 0:00 [kthreadd] ……
[root@axiang ~]# ps aux | grep vmstat root 2430 0.1 0.1 148308 1344 pts/0 T 17:30 0:00 vmstat 1 root 2432 0.0 0.0 112664 976 pts/0 S+ 17:30 0:00 grep --color=auto vmstat
進程(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操做系統結構的基礎。在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。 運行中的進程可能具備如下三種基本狀態:
線程,有時被稱爲輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程本身不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的所有資源。一個線程能夠建立和撤消另外一個線程,同一進程中的多個線程之間能夠併發執行。因爲線程之間的相互制約,導致線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。每個程序都至少有一個線程,若程序只有一個線程,那就是程序自己。
在單個程序中同時運行多個線程完成不一樣的工做,稱爲多線程。
netstat命令用來查看服務在網絡上的通訊狀態,端口
常見用法
[root@axiang ~]# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 921/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1385/master tcp6 0 0 :::22 :::* LISTEN 921/sshd tcp6 0 0 ::1:25 :::* LISTEN 1385/master udp 0 0 127.0.0.1:323 0.0.0.0:* 517/chronyd udp6 0 0 ::1:323 :::* 517/chronyd raw6 0 0 :::58 :::* 7 558/NetworkManager Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 17374 1385/master private/lmtp unix 2 [ ACC ] STREAM LISTENING 17377 1385/master private/anvil :proto爲unix的是系統內的socket文件。 ...
[root@axiang ~]# netstat -an | head Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 52 192.168.83.131:22 192.168.83.1:49690 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN udp 0 0 192.168.83.131:36558 61.216.153.107:123 ESTABLISHED udp 0 0 192.168.83.131:55028 85.199.214.100:123 ESTABLISHED ...
[root@axiang ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}' LISTEN 4 ESTABLISHED 1 //併發數,直接影響服務器資源使用狀況
ss命令用來顯示處於活動狀態的套接字信息。ss命令能夠用來獲取socket統計信息,它能夠顯示和netstat相似的內容。但ss的優點在於它可以顯示更多更詳細的有關TCP和鏈接狀態的信息,並且比netstat更快速更高效,缺點是不會顯示進程的名稱。
[root@axiang ~]# ss -an Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port nl UNCONN 0 0 0:-192937426 * nl UNCONN 0 0 0:0 * nl UNCONN 0 0 0:-192937426 *
tcpdump命令是一款sniffer工具,它能夠打印全部通過網絡接口的數據包的頭信息,也可使用-w選項將數據包保存到文件中,方便之後分析。
常見用法
[root@axiang ~]# tcpdump -nn -i ens33 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 65535 bytes 21:12:01.388269 IP 192.168.83.131.22 > 192.168.83.1.49690: Flags [P.], seq 339706 21:12:01.406543 IP 192.168.83.1.49690 > 192.168.83.131.22: Flags [.], ack 212, wi
查看1.cap文件信息:
[root@axiang-02 ~]# tcpdump -nn -i ens33 -c 5 -w /tmp/1.cap tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 65535 bytes 5 packets captured 5 packets received by filter 0 packets dropped by kernel [root@axiang-02 ~]# tcpdump -r /tmp/1.cap reading from file /tmp/1.cap, link-type EN10MB (Ethernet) 12:45:38.564652 IP axiang-02.ssh > 192.168.83.1.50036: Flags [P.], seq 406420592:406420740, ack 1872774135, win 294, length 148 12:45:38.565089 IP 192.168.83.1.50036 > axiang-02.ssh: Flags [.], ack 148, win 254, length 0 12:45:40.715007 IP axiang-02.41813 > 61-216-153-105.HINET-IP.hinet.net.ntp: NTPv4, Client, length 48 12:45:44.496768 IP 192.168.83.1.50036 > axiang-02.ssh: Flags [P.], seq 1:53, ack 148, win 254, length 52 12:45:44.540043 IP axiang-02.ssh > 192.168.83.1.50036: Flags [.], ack 53, win 294, length 0
[root@axiang-02 ~]# yum install -y wireshark
常見用法
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"