1. 程式人生 > >監控io性能,free命令,ps命令,查看網絡狀態,linux下抓包

監控io性能,free命令,ps命令,查看網絡狀態,linux下抓包

監控io性能

監控io性能
[root@localhost ~]# iostat
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)     2017年09月12日     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.11    0.00    0.23    0.01    0.00   99.66

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.61        19.24         1.76     124103      11353
sdb               0.07         0.53         0.00       3407          4
scd0              0.00         0.01         0.00         44          0
dm-0              0.01         0.07         0.00        456          0

[root@localhost ~]# 
  • iostat -x

[root@localhost ~]# iostat -x
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)     2017年09月12日     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.10    0.00    0.23    0.01    0.00   99.66

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.02    1.11    0.42    18.29     1.68    26.04     0.00    0.37    0.34    0.44   0.27   0.04
sdb               0.00     0.00    0.07    0.00     0.50     0.00    14.30     0.00    0.09    0.09    1.00   0.08   0.00
scd0              0.00     0.00    0.00    0.00     0.01     0.00     8.00     0.00    0.45    0.45    0.00   0.45   0.00
dm-0              0.00     0.00    0.01    0.00     0.07     0.00    15.20     0.00    0.08    0.08    0.00   0.07   0.00

[root@localhost ~]# 

著重看%util列,如果數值很大,說明讀寫很忙。如果讀寫不大,說明硬盤有問題。

  • iotop 來查看占用IO高的進程

    沒有安裝過:yum install -y 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                                                                             
  2434 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.03 % [kworker/0:2]
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 21
     2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
     3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     6 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u256:0]
     7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
     8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]
     9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
    10 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    12 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khelper]
    13 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
    14 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
    15 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khungtaskd]
    16 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [writeback]
    17 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kintegrityd]
    18 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [bioset]
    19 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kblockd]
    20 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [md]
   533 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % vmtoolsd
   534 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd-logind
    26 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kswapd0]
    27 be/5 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksmd]
    28 be/7 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khugepaged]
    29 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [fsnotify_mark]
    30 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [crypto]
   545 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % agetty --noclear tty1 linux
   548 be/4 polkitd     0.00 B/s    0.00 B/s  0.00 %  0.00 % polkitd --no-debug [gmain]
    38 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthrotld]
    39 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u256:1]
    40 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kmpath_rdacd]
    41 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kpsmoused]

free命令

直接查看內存使用的命令

[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:         999936      121540      581256        6844      297140      693540
Swap:       2097148           0     2097148
[root@localhost ~]# 
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           976M        118M        567M        6.7M        290M        677M
Swap:          2.0G          0B        2.0G
[root@localhost ~]# 

buff/cache緩沖/緩存,緩存,是cpu向硬盤讀取數據的時候,緩存(cache)在內存裏。緩沖是:cpu處理完的數據寫入磁盤,緩沖(buff)在內存裏面。

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

avaliable包含free和buffer/cache剩余部分。

ps命令

  • ps aux

    靜態顯示所有的進程

  • ps aux |grep nginx

    查看某一個進程

[root@localhost ~]# ps aux |grep nginx
root       2757  0.0  0.0 112664   968 pts/0    R+   20:57   0:00 grep --color=auto nginx
[root@localhost ~]# 

PID :進程ID,用於殺掉一個進程,kill 2757

查看一個進程:ls -l /proc/505/

  • ps aux 後關註STAT列

    D不能中斷的進程

R run狀態的進程

S sleep狀態的進程

T 暫停的進程

Z 僵屍進程

< 高優先級進程

N 低優先級進程

L 內存中被鎖了內存分頁

s 主進程

l 多線程進程

+ 前臺進程

  • ps -elf

和ps aux 差不多。

netstat 查看網絡狀態

  • netstat -lnp 查看監聽端口

[root@localhost ~]# 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      887/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1494/master         
tcp6       0      0 :::22                   :::*                    LISTEN      887/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1494/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           542/chronyd         
udp6       0      0 ::1:323                 :::*                                542/chronyd         
raw6       0      0 :::58                   :::*                    7           581/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     12552    1/systemd            /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     12561    1/systemd            /run/lvm/lvmpolld.socket
unix  2      [ ACC ]     STREAM     LISTENING     19948    1494/master          private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     19951    1494/master          private/defer
  • netstat -an

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

    [root@localhost ~]# netstat -an | awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}‘
    LISTEN   4
    ESTABLISHED      1

    主要看ESTABLISHED,這個數字大,說明系統忙。網站並發連接數,就是同一時刻有多少個客戶端連著。

linux 下抓包

  • 抓包工具tcpdump

    沒有這個命令需要安裝一下:yum install -y tcpdump

指定網卡名字 tcpdump -nn -i ens33

運行完上面命令後會出現密密麻麻的一堆字符串,在按Ctrl+c 之前,這些字符串一直在刷屏,刷屏越快說明網卡上的數據包越多。我們只需要關註第3列和第4列,它們顯示的信息為哪一個ip+端口號在連接哪一個ip+端口號。

-nn選項的作用是讓第3列和第4列顯示成"ip+端口號"的形式,如果不加-nn選項則顯示“主機名+服務名稱” -i 選項後面跟設備名稱。

tcpdump -nn -i ens33 port 22 指定只抓22端口的包

tcpdump -nn -i ens33 tcp and not port 22 指定抓tcp的包,但是不要22端口的

tcpdump -nn -i ens33 port 22 and port 53 只抓22和53 端口的包。

tcpdump -nn -i ens33 -c 100 只抓100條

tcpdump -nn -i ens33 -c 100 -w /tmp/1.cap 抓100條然後保存到/tmp/1.cap

tcpdump -r /tmp/1.cap 查看這個抓取的數據包。

  • 抓包工具 wireshark

    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"

監控io性能,free命令,ps命令,查看網絡狀態,linux下抓包