1. 程式人生 > >Oracle 在Linux下HugePage的配置

Oracle 在Linux下HugePage的配置

conf 實例 所有 服務 RoCE 斷開 聽說 oracle 登錄

因為自從接觸Oracle依賴,生產環境用的一般是Aix系統,在Aix下沒有聽說過關於HugePage的相關概念。最近處理了一個關於Suse Linux下HugePage的問題。當時排查的方向如下:

  • 當客戶在單個節點做壓力測試時,物理內存為256G,隨著壓力測試的繼續,內存使用率會飆升到100%,最終導致系統掛起。
  • 當時在排查的時候,考慮到SGA已經限定為135G,pga_aggregate_limit大小為45G(在12C中此參數為硬性指標,當占用的pga達到此參數設定的大小,連接會斷開)。正常情況下,數據庫使用的內存不會超過190G。
  • 且通過給v$process查看PGA_ALLOC_MEM的SUM總和大小不超過5G。

後來最終定位到HugePage的問題,通過調整memlock最終解決。

下面來看一下在Linux下如何配置HugePage:

1.設置memlock參數:

設置的/etc/security/limits.conf文件memlock用戶限制。設定值(單位為KB)略小於OS安裝的RAM,大於將要分配給oracle的內存總量。
例如如果服務器配置了256GB=264511244KB的內存,你可以設置:264511244*0.8=211608995。
#vi /etc/security/limits.conf
...
oracle   soft   memlock    211608995
oracle   hard   memlock   211608995

重新登錄到Oracle產品所有者帳戶(例如‘oracle‘),檢查memlock限制。 $ ulimit -l 211608995

2.修改vm.nr_hugepages參數

確保所有的數據庫實例(包括ASM實例)都已啟動。手工計算vm.nr_hugepages>=SGA_Target/Hugepagesize(2M)
如:SGA=143G, vm.nr_hugepages=(143+2)*1024/2=74240
用戶編輯文件/etc/sysctl.conf設置vm.nr_hugepages參數:
#vi /etc/sysctl.conf
...
vm.nr_hugepages = 74240
修改後,使參數立即生效
sysctl -p

Oracle 在Linux下HugePage的配置