Oracle 在Linux下HugePage的配置
阿新 • • 發佈:2018-08-19
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的配置