故障簡單描述一下:LINUX系統未開啟HugePages,主機內存將近300G,SWAP是32G。ORACLE 的 SGA_MAX_SIZE設置是主機內存的將近80%,SGA_TARGET設置是主機內在的將近60%,正常情況下數據庫session大約在將近500。故障當天業務有變化,session數增加了一倍,達到上1000個,內存緊張,用到了SWAP空間。
解決:找時間關數據庫,重新配置HugePages,重啟數據庫後觀察,內存消耗較少,與未開啟HugePages之前是數量級對比。Hugepage可以減輕cpu的負擔,還可以減少系統內存的消耗;一般情況下建議linux的數據庫系統配置Hugepage(特別是內存大、SESSION多).
會話數600多時
[oracle@* ~]$ ps -ef|grep LOCAL| wc -l 613 [oracle@* ~]$ ps -ef|grep LOCAL| wc -l 647 [oracle@ ~]$ free -m total used free shared buffers cached Mem: 257927 255079 2847 0 64 148001 -/+ buffers/cache: 107013 150914 Swap: 31999 13738 18261 [oracle@ ~]$ cat /proc/meminfo |grep PageT PageTables: 94353044 kB [oracle@ ~]$ free -m total used free shared buffers cached Mem: 257927 255182 2745 0 64 147743 -/+ buffers/cache: 107373 150553 Swap: 31999 13981 18018 [oracle@ ~]$ ps -ef|grep LOCAL| wc -l 654 [oracle@~]$ cat /proc/meminfo |grep PageT PageTables: 95038204 kB
會話數上1000時,
[oracle@ ~]$ cat /proc/meminfo |grep PageT PageTables: 110855888 kB [oracle@ ~]$ ps -ef|grep LOCAL| wc -l 1016
補充下配置HugePages後的使用情況
[oracle@ ~]$ cat /proc/meminfo |grep Page PageTables: 164464 kB [oracle@~]$ ps -ef|grep LOCAL|wc -l 429