监控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是缓存)
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端口并指定iptcpdump -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端口网站,访问的哪个位置,通过什么链接进来的