Linux必知必会--vmstat
视野、格局、胸怀、魄力 ---无 ? 参考资料:https://man.linuxde.net/vmstat http://www.ha97.com/4512.html ? vmstat命令的含义为显示虚拟内存,它可报告关于进程、内存、I/0等系统整体运行状态。 ? 语法vmstat 选项 参数 ? 参数: ? 事件间隔:状态信息刷新的时间间隔 ? 次数:显示报告的次数 ? 示例: ? vmstat 1? ? ? 每隔1s输出一次 ? vmstat 1 5 ? 每个1s输出一次,一共输出5次 ? 字段说明? procs: ? r:运行队列中进程数量,这个值也可以判断是否需要增加CPU ? b:等待I/O的数量 ? Memory: ? swpd:使用虚拟内存的大小,如果swpd的值不为0.但是SI、SO的值增长期为0.这种情况不会影响系统性能。 ? free:空闲物理内存大小 ? buff:用作缓冲的内存大小 ? cache:用作缓存的内存大小,如果cache的值大时,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO、bi会非常小 ? swap: ? si:每秒从交换写到内存的大小,由磁盘调入内存 ? so:每秒写入交换区的内存大小,由内存调入磁盘 ? 注:内存够用的时候,这2个值都是0,如果这2个值长期大于0的时候,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少或者接近于0的时候,就认为内存不够用了,不能光看这一点,还要结合si和so。如果free很少,但是si和so也很少(大多时候是0),那么不必担心,系统性能这时候不会受到影响。 ? IO: ? bi:每秒读取的块数 ? bo:每秒写入的块数 ? 注:随机磁盘读写的时候,这2个值越大(如超出1024K),能看到CPU在IO等待的值也会变大。 ?? System: ? in:每秒中断数,包括时钟中断 ? cs:每秒上下文切换数 ? 注:上面2个值越大,会看到由内核消耗的CPU时间会越大。 ? CPU:(百分比) ? us:用户进程执行时间百分比 ? us的值比较高的时候,说明用户进行消耗CPU时间多,但是如果长期超50%的使用,那么我们就应该考虑优化程序算法或者进行加速。 ? sy:内核系统进程执行时间百分比 ? 注:sy的值越高时。说明系统内核消耗的cpu资源多,这并不是良性表现,应该检查原因。 ? wa:IO等待时间百分比 ? wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作) ? id:空闲时间百分比? ? 总结: 目前说来,对于服务器监控有用处的度量主要有: r(运行队列) 通过VMSTAT识别CPU瓶颈: Linux下查看CPU核心数的命令: 当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种: 1. 最简单的就是增加CPU个数和核数 通过vmstat识别CPU满负荷: 首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU 满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。 通过vmstat识别RAM瓶颈: 数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。 首先用free查看RAM的数量: 当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。 解决的办法有几种: 1. 最简单的,加大RAM; 如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。 1.)如果在processes中运行的序列(process r)是连续的大于在系统中的CPU的个数表示系统现在运行比较慢,有多数的进程等待CPU。 2.)如果r的输出数大于系统中可用CPU个数的4倍的话,则系统面临着CPU短缺的问题,或者是CPU的速率过低,系统中有多数的进程在等待CPU,造成系统中进程运行过慢。 3.)如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us)系统则面临着CPU资源的短缺。 解决办法: 当发生以上问题的时候请先调整应用程序对CPU的占用情况.使得应用程序能够更有效的使用CPU.同时可以考虑增加更多的CPU.??关于CPU的使用情况还可以结合mpstat,? ps aux top? prstat –a等等一些相应的命令来综合考虑关于具体的CPU的使用情况,和那些进程在占用大量的CPU时间.一般情况下,应用程序的问题会比较大一些.比如一些sql语句不合理等等都会造成这样的现象. 内存问题现象: 内存的瓶颈是由scan rate (sr)来决定的.scan rate是通过每秒的始终算法来进行页扫描的.如果scan rate(sr)连续的大于每秒200页则表示可能存在内存缺陷.同样的如果page项中的pi和po这两栏表示每秒页面的调入的页数和每秒调出的页数.如果该值经常为非零值,也有可能存在内存的瓶颈,当然,如果个别的时候不为0的话,属于正常的页面调度这个是虚拟内存的主要原理. 解决办法: 2.增加系统的内存. 3. Implement priority paging in s in pre solaris 8 versions by adding line “set priority paging=1” in /etc/system. Remove this line if upgrading from Solaris 7 to 8 & retaining old /etc/system file. 关于内存的使用情况还可以结ps aux top? prstat –a等等一些相应的命令来综合考虑关于具体的内存的使用情况,和那些进程在占用大量的内存.一般情况下,如果内存的占用率比较高,但是,CPU的占用很低的时候,可以考虑是有很多的应用程序占用了内存没有释放,并没有占用CPU时间,可以考虑应用程序,对于未占用CPU时间和一些后台的程序,释放内存的占用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |