这个工具,对于分析系统作用还是不小的。
很多人经常用 top 命令来查看系统的LOAD状况,但是 这个不一定准确,因为老的操作系统版本针对于多核支持性并不是那么好,所以很多时候TOP查看出来的并不准确,当然用vmstat 就是可以了
vmstat介绍及用途
通过STATSPACK收集服务器信息,主要通过收集VMSTAT的信息来展现服务器状况。VMSTAT工具是最常见的UNIX监控工具,可以展现给定时间间隔的服务器的状态值。主要用来报告虚拟内存的统计信息
vmstat [ -f ] [ -i ] [ -s ] [ -I ] [ -t ] [ -v ] [ PhysicalVolume ... ] [ Interval [ Count ] ]
一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数
我们每一秒看下状况
看下情况发现 目前系统空闲率基本是100%
对于服务器监控有用处的度量主要有:
r(运行队列)
pi(页导入)
us(用户CPU)
sy(系统CPU)
id(空闲)
(如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。)
(如果bi,bo 长期不等于0,表示内存不足)
当然通过VMSTAT也可以识别CPU瓶颈
r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了
获取CPU的个数
针对于LINUX环境截图如下:
当然针对像AIX的一些小型机 就是用
prtconf 来获取了
如果当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:
1.找出消耗CPU增长的原因 比如NFS的压力 中间件设置不当
2. 最简单的就是增加CPU个数(一般小型机方便增加)
3.调正任务的优先级
4.调整下任务的执行时间,主要是为了平衡任务从而降低CPU的压力
通过VMSTAT识别CPU满负荷
一般情况是你几个CPU的占用都达到100% 算是满负荷的状态,LINUX本身的机制是让CPU尽可能繁忙,达到高的吞吐量的,这个基本还是需要看队列的状况
通过VMSTAT识别RAM频颈
当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。
解决办法:
1.加大RAM
2.识别出是否中间件或者程序有内存泄漏
3.查看那个进程占用比较高的内存
通过以下命令查看:(找出消耗内存最多的前10名进程)
[superme@PC_stmhtest01 ~]$ ps -auxf | sort -nr -k 4 | head -10
vmstat 一般LINUX操作系统内存,至于有些人说用额外的HTOP这些命令 都是需要安装包的不建议采用