监控io性能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监控io性能相关的知识,希望对你有一定的参考价值。

命令:
iostat
语法:
tcpdump(选项)
命令选项:
-x(目前只需要用到这个参数)
具体用法:
[[email protected] ~]# iostat -x 1
技术分享图片只需要关注此项即可
%util列意义为:磁盘使用占用CPU时间比,这个比值越低越好。
命令:
iotop
描述:
查看当前在占用IO的进程
用法:
直接执行命令,高亮条下即是IO占比情况
技术分享图片
二、free
命令描述:
查看内存使用情况
语法:
free(选项)
选项:
-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-s<间隔秒数>:持续观察内存使用状况;
-t:显示内存总和列;
-V:显示版本信息。
-h:在数值后加上单位
用法及列信息:
直接执行或加上想要加入的参数:
[[email protected] ~]# free -h
技术分享图片
第一列,内存总大小 =total=used+free+buff/cache

第二列使用情况

第三列剩余大小

第四列共享大小

第五列缓冲缓存大小

Buffer/cache含义: 0000(磁盘) -->内存(cache)-->cpu
cpu(0000) -->内存(buffer) -->磁盘
第六列包含free和buffer/cache剩余部分(重要)

三、ps
命令描述:
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
命令主要参数:
ps -aux 将当前系统所有进程列出
ps -elf 把系统所有进程列出(两种方法用法基本相同 ,我们这里用ps –aux,较为直观)
拓展:检查当前系统有没有某个进程
如检查当前系统有没有mysql进程
ps aux |grep mysql
用法及列信息:
[[email protected] ~]# ps -aux
技术分享图片
第一列进程用户,是哪位用户启动的该进程:

第二列PID进程ID,杀死进程时直接输入进程ID,如:kill 1,杀死PID为1的进程

第三列:cpu百分比,该进程占用CPU%

第四列:内存百分比,该进程占用内存%

第五列:虚拟内存

第六列:物理内存

第七列:该进程在哪个TTY上

第八列:(需要关注)进程的状态

注:字符所代表的含义:
D:不能中断的进程(占用系统负载高,但占用CPU不高)
R:run(正在跑的进程)状态的进程,某个时间段内使用cpu
S:sleep(运算完数据后暂时休息,过会激活继续使用cpu)状态进程
T:暂停的进程
Z:僵尸进程
<:高优先级的进程
N:低优先级进程
L:内存中被锁了内存分页(了解即可)
s:主进程
l:多线程进程(线程由一个大进程组成,一个进程里有多个线程)
线程进程扩展:
http://blog.csdn.net/lycyl/article/details/51178334
+:前台进程
第九列:该进程启动时间

第十列:该进程运行了多久

第十一列:是由什么命令启动该进程

四: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]}‘
五、tcpdump命令
命令描述:
tcpdump命令是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。
语法:
tcpdump(选项)
选项:
-a:尝试将网络和广播地址转换成名称;
-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件>:指定内含表达方式的文件;
-i<网络界面>:使用指定的网络截面送出数据包;
-l:使用标准输出列的缓冲区;
-n:不把主机的网络地址转换成名字;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q :快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件读取数据包数据;
-s<数据包大小>:设置每个数据包的大小;
-S:用绝对而非相对数值列出TCP关联数;
-t:在每列倾倒资料上不显示时间戳记;
-tt: 在每列倾倒资料上显示未经格式化的时间戳记;
-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;
-v:详细显示指令执行过程;-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
-w<数据包文件>:把数据包数据写入指定的文件。
用法:
tcpdump –nn(最常用)查看数据包流向情况
tcpdump -nn -i ens33 指定网卡
tcpdump -nn port 80指定端口
tcpdump -nn not port 22 and host 192.168.0.100排除法,命令含义为,不显示端口为22,和只显示host为192.168.0.100的包
tcpdump -nn -c 100 -w 1.cap 指定长度,并储存到指定 文件
可以用file命令查看改文件
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"
执行tshark 命令需要安装wireshark
yum install -y wireshark
可以查看指定网卡,80端口的一个web访问情况
扩展:
tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html
tcp三次握手四次挥手:
http://www.doc88.com/p-9913773324388.html

以上是关于监控io性能的主要内容,如果未能解决你的问题,请参考以下文章

Performance Monitor4:监控SQL Server的IO性能

Linux的IO性能监控工具iostat详解

Linux的IO性能监控工具iostat详解

Linux的IO性能监控工具iostat详解

磁盘 IO 和网络 IO 该如何评估监控性能定位和优化

监控io性能