监控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"