一次異常記憶體消耗的診斷與解決

li__hl8888發表於2016-05-18

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部落格 ” ,連結:http://blog.itpub.net/8568259/viewspace-2102072/,如需轉載,請註明出處,否則將追究法律責任。

相關文章