vmstat

vmstat介绍
通过STATSPACK收集服务器信息,主要通过收集VMSTAT的信息来展现服务器状况。VMSTAT工具是最常见的UNIX监控工具,可以展现给定时间间隔的服务器的状态值。
一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。如:
[oracle@localhost oracle]$vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b  swpd     free   buff      cache    si so  bi bo in  cs     us      sy id wa
0 0 195804 3812 40616 1598656 0 0     0      0 1024 66976 0  0 100 0
0 0 195804 3812 40616 1598656 0 0     0 12    1048 66961 0  0 100 0
0 0 195804 3812 40616 1598656 0 0     0 28    1054 67067 0  0 100 0
0 0 195804 3812 40616 1598656 0 0     0      0 1020 66988 0  0 100 0
(注:目前系统几乎空闲,并且不同操作系统VMSTAT输出内容有所不同)
目前说来,对于服务器监控有用处的度量主要有:
r------运行队列
b------表示阻塞的进程的数量。
swpd-----代表虚拟内存使用的数量。
free -------代表空闲内存的数量。
buff--------代表作为缓冲区的内存的数量。
cache-------文件系统缓存使用的RAM数量。
si ------------从磁盘分页到内存的数量。
so----------从内存分页到磁盘的数量。
bi----------代表从硬盘读出的块数量。
bo---------代表写入硬盘的块数量。
us---------代表用户的进程所占的cpu百分比。
sy---------代表系统进程所占的cpu的百分比。
id----------系统空闲的cpu所占的百分比。
(如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。)
(如果bi,bo 长期不等于0,表示内存不足)

通过VMSTAT识别CPU瓶颈
r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了

获得CPU个数的命令(LINUX环境):
cat /proc/cpuinfo|grep processor|wc -l
当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:
1. 最简单的就是增加CPU个数
2. 通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务
3. 调整已有任务的优先级

通过VMSTAT识别CPU满负荷
首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU 满负荷工作并不能说明什么,UNIX总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。

free
通过VMSTAT识别RAM瓶颈
数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。
首先察看RAM的数量,命令如下(LINUX环境):
[oracle@oracle-db02 ~]$ free
         total    used    free     shared buffers     cached
Mem:    2074924 2071112    3812       0    40616 1598656
-/+ buffers/cache:     431840 1643084
Swap:    3068404     195804 2872600

当然可以使用top等其他命令来显示RAM。
当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。

解决的办法有几种:
1. 最简单的,加大RAM
2. 改小SGA,使得对RAM需求减少
3. 减少RAM的需求(如:减少PGA)

loadavg
利用/proc/loadavg监控CPU的平均负载文件内容如下:
[root@supersun ~]# cat /proc/loadavg
0.43 0.26 0.29 1/125 4133
这里的平均负载也就是可运行的进程的平均数
前三个值分别对应系统在5分钟、10分钟、15分钟内的平均负载
第四个值的分子是正在运行的进程数,分母是进程总数,最后一个是最近运行的进程ID号
现在我们将平均负载的值写到虚拟终端的标题栏上。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章