未開啟HugePages ORACLE session劇增時引起的一次悲劇

還不算暈發表於2014-12-17

故障簡單描述一下: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多).

關於開啟hugepages與關閉,參考:http://blog.csdn.net/haibusuanyun/article/details/20697371

關於LINUX 6關閉;http://blog.csdn.net/haibusuanyun/article/details/41983497

會話數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

相關文章