监控io性能

iostat查看磁盘情况(需要安装sysstat包)

可以直接运行该命令 iostat

或者后面加一个1,就是动态显示。 iostat 1

iostat和iostat 1所表现出来的东西,用sar都可以体现出来,但是用iostat -x 就无法使用sar体现出来 iostat -x

iostat -x有个非常重要的指标,%util,表示磁盘有多少时间占用cpu时间比,等待io时间占比,等待磁盘读写时间占总时间的比例。

如果这一列的数字很大,50或者60,并且wkb/s列也很大那就说明磁盘io比较大比较忙,但是如果wkb/s列并不大,那么就说明磁盘出故障了。

硬盘慢就会影响系统的性能。

iotop 查看具体进程读写磁盘情况,和top命令很像(需要安装iotop) yum install -y iotop

Total DISK WRITE 写入速度 Actual DISK WRITE 读取速度

我们主要查看IO这一列 iotop

free命令

free查看内存使用情况 free

第一行说明、第二行是内存使用情况、第三行是交换分区。

第一列 total 是总大小(默认单位是kb,可以使用-m指定单位为兆,或者使用-h使用适当的单位)、第二列 used 是已使用的,第三列 free 是剩余的、第四列 shared 是共享的、第五列 buff/cache、第六列available。

系统会把内存预留一点给buff/cache(buff是缓冲、cache是缓存)

free查看内存使用情况主要看的就是avaliable。

ps命令

ps查看进程

ps aux (静态的列出系统所有进程) ps aux

从前向后分别是 运行用户、pid、cpu占用、内存占用、虚拟内存、物理内存、tty、stat(进程的状态)、什么时候启动的、运行了多久了、命令。

pid我们会在想要结束一个进程的时候使用,比如我们想要结束2086,那就使用kill 2086(2086为这个进程的pid) kill 2086

然后我们使用管道符查看刚才结束的进程2086是否还存在(刚才结束进程前,我们得知该进程为top) ps aux |grep top

我们要关注STAT(进程的状态)。

STAT(进程的状态)有:

D不能中断。

R(run)正在跑的进程(在一个时间段内使用cpu)。

S(sleep)进程运算完可能会暂停一下,过会会激活

T暂停的进程(ctrl+z暂停的进程)

+前台进程

Z僵尸进程

<高优先级的进程(cpu优先处理)

N低优先级

L内存中被锁了内存分页的

s主进程

L多线程进程

ps aux用法:查看某个进程有没有在运行(上面已经使用过一次了),查看top是否在运行 ps aux |grep top

查看网络状态

netstat查看网络状态(tcp/ip通信状态)

netstat -lnp 查看监听端口(用户和服务器通信需要端口) netstat -lnp

**像tcp6,udp6 这样后面加6的,就是ipv6的端口,没有加的如tcp,udp 就是ipv4的端口 **

STREAM内部通信

查看tcp/ip状态 netstat -an

只查看tcp以及tcp6的端口 netstat -ltnp

只查看tcp以及tcp6以及udp端口 netstat -ltunp

TIME_WAIT状态:客户端和服务端两个机器相互通信之后它们的链接还没有断开,处于一种等待的状态,等待下次这两台机器再次连接传输数据。

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

我们主要关注ESTABLISHED,这个数字如果很大说明你的系统很忙,(并发连接数,在这个时间内有多少个客户端在和服务端通信)一般一千以内

ss -an和netstat相似,不过不显示进程名 ss -an

查看LISTEN一列 ss -an |grep -i listen

linux下抓包

tcpdump抓包工具(如果没有需要安装tcpdump包) yum install -y tcpdump

指定网卡抓包 tcpdump -nn -i ens33

-nn表示ip用数字的形式表示出来,如果不加会显示主机名。 tcpdump -i ens33

第一列往后分别是时间、源ip、端口、到哪个ip去、端口、包的信息。

我们主要关注源IP、端口和目标IP、端口。看数据的流向。

有时候也要看length(长度),如下图

指定端口(porn指定,22端口 可修改为任意端口) tcpdump -nn -i ens33 port 22

排除写法,排除22端口(not 去除此端口) tcpdump -nn -i ens33 not port 22

排除22端口并指定ip tcpdump -nn -i ens33 not port 22 and host 192.168.71.131

指定抓的包个数(-c 指定数字) tcpdump -nn -i ens33 -c 10

指定抓包数,并将结果存到指定文件里去,(这个文件cat不了,使用file可查看大概信息) tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap

查看数据流 tcpdump -r /tmp/1.cap

tshark抓包工具类似于tcpdump(需要安装wireshark包) yum install -y wireshark

查看指定网卡80端口的wap访问的情况(由于虚拟机没运行任何80端口程序,所以这条命令暂时无法使用) tahark -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"

这样查看可以看到有哪些IP访问我的80端口网站,访问的哪个位置,通过什么链接进来的