监控io性能、free命令、 ps命令、查看网络状态、linux下抓包

iostat查看硬盘详细信息:

Linux系统出现了性能问题,一般我们可以通过top.iostat,vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据

[root@glinux-01 ~]# iostat
Linux 3.10.0-693.el7.x86_64 (glinux-01) 	2018年03月15日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.19    0.00    0.36    0.06    0.00   99.39

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.66        12.31        12.51     202336     205754
sdb               0.02         0.22         0.00       3580          0
dm-0              0.00         0.06         0.00       1036          0

iostat -x 

[root@glinux-01 ~]# iostat -x 
Linux 3.10.0-693.el7.x86_64 (glinux-01) 	2018年03月15日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.18    0.00    0.36    0.06    0.00   99.40

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.03    0.37    0.27    11.74    12.11    73.93     0.01   15.79   
10.55   22.91   2.96   0.19
sdb               0.00     0.00    0.01    0.00     0.21     0.00    28.99     0.00    0.43    

0.43    0.00   0.28   0.00
dm-0              0.00     0.00    0.00    0.00     0.06     0.00    48.19     0.00    0.28    

0.28    0.00   0.23   0.00

 参数含义(重要参数%util)

rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s 
wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s 
r/s:每秒完成的读I/O设备次数。即delta(rio)/s 
w/s:每秒完成的写I/0设备次数。即delta(wio)/s 
rsec/s:每秒读扇区数。即delta(rsect)/s 
wsec/s:每秒写扇区数。即delta(wsect)/s 
rKB/s:每秒读K字节数。是rsec/s的一半,因为每扇区大小为512字节 

wKB/s:每秒写K字节数。是wsec/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(usr)/s/1000(因为use的单位为毫秒) 

如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负载,该磁盘可能存在瓶颈。

当发现磁盘io很忙,想查看哪个进程频繁读写,可以用iotop

(如未安装,先yum install -y intop)

IO从大到小排列

free 查看内存使用情况

单位kb(free为0了,就是内存有问题了)

[root@glinux-01 ~]# free
              total        used        free      shared  buff/cache   available
Mem:         750104      126872      478088        5268      145144      474424
Swap:       2097148           0     2097148

total 总共内存

used 已使用

free  剩余

buff 缓冲cache  快取  (系统预留一部分内存给buff/cache)

available  剩余的+buff/cache没用完的

数据(磁盘)---内存(cache)----cpu         读数据read cache

cpu(处理过的数据)---内存(buffer)----磁盘 写数据 write buff

free -m 以M为单位显示内存

[root@glinux-01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            732         123         466           5         141         463
Swap:          2047           0        2047

ps命令(查看系统进程使用状况)

ps aux 静态查看。 top是动态查看

[root@g_linux01 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6 128164  6824 ?        Ss   3月18   0:13 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2  0.0  0.0      0     0 ?        S    3月18   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    3月18   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   3月18   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    3月18   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    3月18   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        R    3月18   0:02 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S    3月18   0:01 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S    3月18   0:00 [kdevtmpfs
  • %cpu  cpu使用百分比
  • %mem 内存使用百分比
  • vsz 虚拟内存使用百分比
  • rss 物理内存
  • stat  状态说明如下
  1. D 不能中断的进程
  2. R run状态的进程
  3. S sleep状态的进程
  4. T暂停的进程
  5. Z僵尸进程
  6. <高优先级进程
  7. N低优先级进程
  8. L内存中被锁了内存分页
  9. s主进程
  10. l多线程进程
  11. +前台进程

通过pid可以杀死进程,也可查看进程目录  ls -l /proc/12/  

用法相对较多的是查看某个进程使用状况

查看网络状态netstat

netstat -lnp查看监听端口

查看链接状况,ESTABLISHED正在连接的进程

linux 抓包

使用tcpdump命令。如未安装先yum install -y tcpdump

tcpdump -nn -i ens33(-i 指定网卡的名字)

-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
19:56:22.470376 IP 192.168.244.128.22 > 192.168.244.1.50832: 
Flags [P.], seq 4910988:4911280, ack 729, win 296, length 292
系统时间 来源主机.端口 > 目标主机.端口 数据包参数

 指定抓包的端口号

[root@glinux-01 ~]# tcpdump -nn  -i ens33 port 22

-c 指定抓取包的数量 -w将输出写入文件中

tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap

查看1.cap文件
[root@glinux-01 ~]# tcpdump -r /tmp/1.cap

yum install -y wireshark 

tshark 命令 查看网卡 什么ip访问的什么网站链接

猜你喜欢

转载自my.oschina.net/u/3771583/blog/1648074