一、监控io性能

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

iostat -x磁盘使用

iotop磁盘使用

centos 查看disk id centos7查看磁盘io_操作系统

centos 查看disk id centos7查看磁盘io_网络_02



rrqm/s:   每秒进行 merge 的读操作数目。即 delta(rmerge)/s



wrqm/s:  每秒进行 merge 的写操作数目。即 delta(wmerge)/s



r/s:           每秒完成的读 I/O 设备次数。即 delta(rio)/s



w/s:         每秒完成的写 I/O 设备次数。即 delta(wio)/s



rsec/s:    每秒读扇区数。即 delta(rsect)/s



wsec/s:  每秒写扇区数。即 delta(wsect)/s



rkB/s:      每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)



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



 

二、free命令查看内存使用情况,系统自动分配一部分给buff/cache缓存

free -m 

free -g

free -h

centos 查看disk id centos7查看磁盘io_数据_03

 

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

磁盘数据-->内存(cache)-->cpu

cpu数据-->内存(buffer)-->磁盘

availiable包含free和buffer/cache剩余部分

 三、ps(process status)命令,查看系统当前进程,静态一次性列出,格式ps [参数]

ps aux  ps -elf查看系统当前所有进程

centos 查看disk id centos7查看磁盘io_操作系统_04

STAT进程状态

D 不能中断的进程

R run状态的进程

centos 查看disk id centos7查看磁盘io_awk_05

S sleep状态的进程

 

centos 查看disk id centos7查看磁盘io_网络_06

T暂停的进程

centos 查看disk id centos7查看磁盘io_数据_07

Z僵尸进程

<高优先级进程

centos 查看disk id centos7查看磁盘io_awk_08

N低优先级进程

centos 查看disk id centos7查看磁盘io_网络_09

L内存中被锁了内存分页

centos 查看disk id centos7查看磁盘io_centos 查看disk id_10

s主进程

 

centos 查看disk id centos7查看磁盘io_centos 查看disk id_11

|多线进程

+前台进程

centos 查看disk id centos7查看磁盘io_centos 查看disk id_12

centos 查看disk id centos7查看磁盘io_awk_13

杀死进程kill 1170

centos 查看disk id centos7查看磁盘io_awk_14

 查看进程路径,首先需要知道进程ID

centos 查看disk id centos7查看磁盘io_centos 查看disk id_15

 

 四、查看网络状态

 netstat查看系统状态

netstat -lnp查看监听端口

netstat -an查看系统的网络连接状态

netstat -lntp 只看出tcp,不包含socket

ss -an和netstat一样

技巧:

netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t" ,sta[key]}'查看所有状态数字

netstat -lnp查看监听端口

centos 查看disk id centos7查看磁盘io_数据_16

查看tcp网络连接状态

centos 查看disk id centos7查看磁盘io_awk_17

nestat -lntp只看出tcp,不包含socket

centos 查看disk id centos7查看磁盘io_网络_18

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

tcp ip三次握手四次挥手

 

centos 查看disk id centos7查看磁盘io_centos 查看disk id_19

 五、linux下抓包

抓包工具tcpdump  

centos 查看disk id centos7查看磁盘io_centos 查看disk id_20

用法:tcpdump -nn 参数

centos 查看disk id centos7查看磁盘io_centos 查看disk id_21

tcpdump -nn -i ens33

centos 查看disk id centos7查看磁盘io_网络_22

tcpdump -nn -i ens33 port 80指定80端口

centos 查看disk id centos7查看磁盘io_操作系统_23

tcpdump -nn -i ens33 not port 22 and host 140.206.78.11  不要22包,只要11ip包

centos 查看disk id centos7查看磁盘io_centos 查看disk id_24

tcpdump -nn -i ens33 -c 100 -w  /tmp/1.cap 指定数据包100个并存到tmp

centos 查看disk id centos7查看磁盘io_awk_25

 

tshark

yum install -y wireshark

centos 查看disk id centos7查看磁盘io_数据_26

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"