本文介绍基于unix系统的主要监控工具。
一:监控的基本知识
l 监控CPU使用率
只要cpu使用率没有达到100%,就表示系统还有能力支持更多的活动。Cpu使用率达到峰值很常见(例如90%),但目的是要找出那些进程过分使用了cpu。Cpu的使用需要注意一下3个问题:
1. 用户使用与系统使用之比。如果系统使用cpu比例过大,则需要仔细检查这个问题。
2. 等待分配资源的进程(队列中)过大,可能预示着cpu资源不足。
3. 环境切换太多或中断太多,会导致cpu使用率降低。
l 管理内存
当系统出现性能问题时,首先要查看内存。内存不足时,系统会发生过多的交换。监控内存时,需要关注以下3个问题:
1. 页进与页出。当内存不足时,页面需要从内存调度到磁盘。过多的页进页出说明内存不足。
2. 换入与换出。交换的统计数据可表示内存设置的合理与否。
3. 活动与非活动页。如果非活动页很少,可能表明物理内存不足。
l 监控磁盘存储
磁盘监控要注意两点,磁盘空间不能用尽,且是否出现由于较慢的磁盘读写而导致瓶颈。
1. 检查可用空间。提前规划或增加磁盘空间,防止出现剩余空间不够。
2. I/O负荷。监控磁盘运转频度是否在正常范围内。
l 监控带宽
简单的网络统计数据,如接受与发送字节数,有助于找出网络问题。较高的网络包碰撞率和过多的数据传输错误可能会导致瓶颈。
二:监控工具
l ps
例如查看pmon进程是否存在:ps –ef | grep ora_pmon
查看db2的相关进程(aix)
l vmstat
从图中可以看出,vmstat监控内核线程状态、内存、分页、故障和cpu使用百分比。
重点关注的参数如下:
Kthr—r:执行队列。当前系统由8颗cpu,采样期间队列数为3,低于8。如果这个数字大于cpu个数,则等待的队列数越大,越可能造成性能问题。假如有16个cpu,那么r值为12,倒也没什么关系,表示有12个进程正在等待使用cpu。但是如果只有2个cpu,r值却为12,则表示系统cpu受限,大量的进程正在等待cpu。
Memory—avm:活动虚拟页面,单位是4K。此例中为3331936个页面,共计12.7GB。avm应该总比ram小,代表使用的物理内存+paging的总和。当大于物理内存时,表明出现页面调度。
Memory—fre:空闲内存页面数,单位4K。此例中为61MB。最小页面数由minfree参数决定。并不是指剩余内存,因为已经使用过的内存会被cache或buffer住。
Page—pi、po:从page置换到内存和从内存置换到page的大小。参考值不能大于5,大于5说明可能内存不足。
Cpu—us、sy:用户占用cpu的百分比、系统占用cpu百分比。之和长期大于80%,可能预示cpu不足。另若系统占用cpu总大于用户进程使用的cpu,则需要注意。
Cpu—wa:IO等待cpu时间。长期高于50,则表示IO太忙。若由分页交换频繁引起,则说明内存不足;若不是,则考虑优化应用与磁盘设备。
l iostat
如果iowait超过25,则表示等待IO所花费的时间占CPU的百分比是25%,系统存在IO或者硬盘瓶颈。
高iowait可能有以下几种原因:
内存不够,造成频繁的swap空间交换数据,导致IO瓶颈。
硬盘上面的数据分布不合理。
数据的fragment不合理。
l sar
观察cpu的消耗情况。Iowait持续过高说明等待IO的时间过高。
l netstat
总结:当对oracle数据库进行性能调优时,首先就是考虑到数据库服务器的性能。
1:vmstat主要关注2点,1为r即队列数,如果队列数相对于逻辑cpu数量太过大的话,说明cpu繁忙,可能不够用;
2为cpu使用率。cpu使用率长期达到90%,cpu面临不足。且如果系统占用cpu比例过高,则要查明原因。
2:vmstat中的pi、po以及iostat中iowait百分比,可以反映出IO读写情况。如果这些值分别高于5和25,说明内存不足,导致内存分页,io瓶颈。
3:netstat可以找出特定端口下的连接以及状态,起到辅助功能。
4:ps可以找出某些进程,对于特定情况下,可以通过kill杀掉某些进程。