分类: Oracle
2008-04-28 08:20:11
来源:赛迪网 作者:Paddy |
作为你积极的维护计划的一部分,检查/var/adm/messages中有没有比如磁盘重试之类的硬件问题或者有没有额外的消息产生也是很有价值的。
察看系统的历史信息也非常有价值;如果你的系统曾经有过更好的性能,画一条时间曲线详细记录何时第一次发现性能变差以及从什么时候开始性能一直很差。
2. 知道你的系统在正常情况下会怎样
保存你的系统是如何正常运转的样例是一个好主意。你可以很容易地收集和保存每月的性能数据,比如:
*stat类:vmstat, mpstat, iostat, vxstat,sar
ps的输出以显示哪些进程在运行 (在Solaris 8操作环境下是prstat)。另外,有不少商业的和无支持的产品都可以用来做性能监测。一个免费的无支持的可选产品是SE Toolkit(要获得其各种版本的信息,请看Sun Performance SE Toolkit page)。SE Toolkit报告磁盘活动、CPU利用情况、TCP和网络连接、内存,以及其他更多信息。在我们的经验里,它安装方便,不需要重启系统,并且生成容易理解的图形显示。
很多这类产品都存在一个共同的问题,就是对不同的硬件配置有不同的门限值。例如,特定的门限值对于400-MHz的系统可能显得太过,会让这个系统慢得象是在爬一样,但是对于一个900-MHz的系统却可能是可以接受的。
3. 寻找性能瓶颈
一旦你已经定义了需要解决的性能问题,下一步骤就是缩小范围到瓶颈产生的地方。
这个阶段有必要问这样一些问题:
应用程序能告诉我它看到哪些是瓶颈?拿Oracle作例子,一个Oracle数据库管理员应该知道BSTAT/ESTATS是什么以及如何运行和理解它们。还是那句话,从应用程序的角度来看问题,BSTATS/ESTATS可以显示限制了Oralce性能的瓶颈,这可以作为进一步分析的指导。
大部分的时间花在哪里,是内核还是用户进程?通过vmstat、mpstat、sar、ps、prstat可以回答这个问题。
具有相近类型的所有资源是否同样繁忙?这个问题的意义在于寻找资源的不平等分布。比如,一个磁盘可能是瓶颈所在,或者一个CPU会比其他CPU更忙。对CPU,看mpstat。对磁盘,用iostat。 哪个或哪些进程在使用最多的资源?用这些命令可以看到使用CPU和内存最多的进程:
ps -eo pid,pcpu,args | sort +1n
CPU百分比:
ps -eo pid,vsz,args | sort +1n
K字节的虚拟内存:
/usr/ucb/ps aux |more
输出被排序,使用CPU和内存最多的进程排在上面。
Solaris 8操作环境提供了prstat,它给出CPU和内存使用情况的一个动态注解。prstat -cvm的输出结果非常有用。
我们现在来看看怎用使常见的Solaris命令来开始性能分析。 |