天天看點

io性能、free、ps指令、檢視網絡狀态、抓包

監控磁盤狀态io

因為磁盤的io也是非常重要的名額。有時cpu,記憶體有剩餘就是負載很高。Vmstat發現b或者wa列資料比較大。說明磁盤有瓶頸。

iostat指令在安裝sysstat包時已經安裝上了,和sar同包

iostat -x 磁盤使用

[root@localhost ~]# iostat -x

Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2017年11月24日 _x8664 (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

0.10 0.00 0.40 0.22 0.00 99.29

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.23 0.01 1.95 1.73 34.32 2.24 19.91 0.02 4.29 4.71 3.82 2.35 0.86

scd0 0.00 0.00 0.00 0.00 0.02 0.00 8.00 0.00 17.45 17.45 0.00 17.45 0.01

%util:表示IO等待時間比。如果占用50%,rKB、wKB不大,%util大磁盤可能存在故障

磁盤很忙是哪個程序在讀寫呢?

iotop 磁盤使用

yum install -y iotop

10.7 free指令

free 檢視記憶體使用情況

free -m / -g / -h檢視記憶體總大小和使用情況

記憶體 記憶體總大小 已用大小 未使用大小 共享大小 緩沖緩存

交換分區 總大小 已用大小 未使用大小

buffer/cache差別

公式:total=used+free+buff/cache 

avaliable包含free和buffer/cache剩餘部分

buffers:緩沖 

cached:緩存

Swap用完要加swap不是解決的辦法,應該加記憶體。

記憶體不夠(記憶體洩漏)要檢查程式。

10.8 ps(pstree)

是一種靜态的。把目前的狀态顯示出來

ps 檢視系統程序

用法:

ps aux、ps -elf //列出系統全部程序

STAT 部分說明

D 不能中斷的程序(對程式有影響的。影響系統負載)

R run 狀态的程序

S sleep 狀态的程序

T 暫停的程序(運作的程序被ctrl+z)

Z 僵屍程序

< 高優先級程序

N 低優先級程序

L 記憶體中被鎖了記憶體分頁

s 主程序(父程序守護程序)

l 多線程程序

前台程序

[root@lsx-02 ~]# ps -aux|grep nginx //檢視程序是否在運作

[root@lsx-02 ~]# ps -aux|grep qmgr

postfix 1872 0.0 0.0 91908 52 ? S 9月15 0:00 qmgr -l -t unix -u

root 12359 0.0 0.1 112672 984 pts/0 R+ 00:24 0:00 grep --color=auto qmgr

[root@lsx-02 ~]# kill 1872 ////殺死程序(不合理程序網站搜尋下。合理的不能殺死,可以考慮加記憶體或者建立叢集)

root 12361 0.0 0.1 112672 984 pts/0 R+ 00:24 0:00 grep --color=auto qmgr

背景:當系統被黑了,看到不知道的程序,想看看程序在哪呢?把程序殺掉,找到pid

[root@lsx-02 ~]# ls -l /proc/1111/ 1111是程序号 可以檢視一個程序從哪裡啟動起來的

[root@lsx-02 ~]# ps –aux

使用者 程序号 Cpu百分比 記憶體百分比 虛拟記憶體 實體記憶體 Tty終端 狀态 什麼時候啟動的 運作多久 程序名字

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.7 50036 4364 ? Ss 9月15 0:06 /usr/lib/

root 2 0.0 0.0 0 0 ? S 9月15 0:00 [kthreadd

root 3 0.0 0.0 0 0 ? S 9月15 0:04 [ksoftirq

父程序是root啟動的 有一個小s主程序(守護程序)

子程序是www啟動的

程序有多個線程,線程使用程序相同的記憶體區域

ps -le

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 1 0 0 80 0 - 12695 ep_pol ? 00:00:03 systemd

1 S 0 2 0 0 80 0 - 0 kthrea ? 

10.9 netstat 檢視網絡狀态

Linux作為伺服器的作業系統,會有很多的服務,服務通常和用戶端互相通信的。意味着它有對外的監聽端口。安裝一個服務就要監聽一個端口,要想其他人通路就要打開一個端口,遠端裝置與這個端口相連,互相通信。

netstat 檢視tcp/ip網絡狀态

[root@lsx-02 ~]# yum install -y net-tools

netstat -lnp 檢視監聽端口

[root@lsx-02 ~]# netstat –lnp -l 監聽

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 

tcp 0 0 127.0.0.1:25 0.0.0.0: LISTEN 1788/master 

tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN 1111/sshd 

tcp6 0 0 ::1:25 ::: LISTEN 1788/master 

tcp6 0 0 :::22 ::: LISTEN 1111/sshd 

udp 0 0 0.0.0.0:46708 0.0.0.0: 504/avahi-daemon: r 

udp 0 0 0.0.0.0:5353 0.0.0.0: 504/avahi-daemon: r 

raw6 0 0 :::58 :::* 7 619/NetworkManager

Linux的socket檔案也是程序之間通信的(在同一台伺服器,兩程序之間互相通信)

unix 3 [ ] STREAM CONNECTED 18212 

unix 2 [ ] DGRAM 15809 

unix 3 [ ] STREAM CONNECTED 14480 

unix 3 [ ] STREAM CONNECTED 17050

netstat -lntp 隻看出tcp的,不包含socket

netstat -an 檢視系統的網絡連接配接狀況

[root@lsx-02 ~]# netstat –an 檢視所有的連接配接狀态

連接配接狀态有LISTENING、ESTABLISHED、TIME_WAIT、FIN_WAIT2、CLOSING

TIME_WAIT就是用戶端與伺服器端互相通信,通信完成之後連接配接還沒斷開處于一種等待的狀态,等待下次兩機器在一次連接配接傳輸資料。

tcp/ip三次握手

ss -an 和nestat異曲同工

ss -an|grep listen -i

分享一個小技巧:

netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}' //各種連接配接狀态次數

ESTABLISHED表示建立連接配接正在傳輸資料的。數越大系統越忙 (在通信)1000以内可以接受(網站并發連接配接數(同一時間有多少用戶端連接配接)ESTABLISHED的數就可以說明并發連接配接數有多少)

抓包工具

抓包工具tcpdump

在講解sar那節,可能遇到攻擊網卡流量異常,記錄的包可能超過一萬,可能想知道有哪些包進來

yum install -y tcpdump

用法:tcpdump -nn

-i 指定監聽的網絡接口。

-nn 不進行端口名稱的轉換。

tcpdump -nn -i ens33 // -nn 如果不加會顯示主機名(加顯示ip端口号)

看的是流向,和length。length預設很多都是tcp,可能看到udp的包,udp的包很有可能你被攻擊了(DDos udp flood)。1G的DDos可能一個小機房都受不了,隻能借助專業的防攻擊裝置、服務(創宇300G應該沒問題)

tcpdump -nn port 80 //指定端口

tcpdump -nn not port 22 and host 192.168.0.100 //不要22端口和隻要host指定ip的包

-c 在收到指定的數量的分組後,tcpdump就會停止。

寫腳本抓資料包

tcpdump -nn -c 100 -w 1.cap // -w指定要存的檔案資料包(這步背景運作或者在開一個終端運作)。是從網卡抓出來的檔案,通信的内容

tcpdump -r /tmp/01tcp.txt //看檔案的内容 -r 讀

yum install -y wireshark //tcpdump類似的工具

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" //指定80端口web的通路情況,類似web通路日志

本文轉自 蝦米的春天 51CTO部落格,原文連結:http://blog.51cto.com/lsxme/2045505,如需轉載請自行聯系原作者

繼續閱讀