首页 > 数据库 > Oracle > 一次异常内存消耗的诊断与解决
1>状态:
系统可用内存低,只有100M:
使用vmstat,top和 sar命令,和正常的系统性能做比较:
1>vmstat 2 10 : 实际情况:r ,b,w,pi,po,us,sy ,id,wa. @PI,PO很高,经常<>0 @r=8,b=5(I/O数量>3说明不正常)
2>top 200M free
3>sar -u 2 10 %wio >%14 %idle<%40 则有性能问题
4>swapinfo used大于%12 %5的标准线路
5>ps -ef|grep oracle|wc -l
Command:getconf PAGESIZE
VMSTAT:
如果r经常大于4,且id经常少于40,表示cpu的负荷很重。
如果pi,po长期不等于0,表示内存不足。
如果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资源的短缺。
假设和分析:
1>ORACLE SGA设置不合理
2>ORACLE PGA设置不合理
3>僵死的进程不能正常释放内存。
4>人为操作造成了内存泄露。
5>操作系统bug
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8568259/viewspace-2102072/ ,如需转载,请注明出处,否则将追究法律责任。