oracle ORA-32701 hang分析(二)---hugepage優化

上次通過巡檢發現數據庫以下問題:

1. 兩個節點間有大量的gc 

詢問應用側開發人員, 整個庫一共三個用戶, UCR、UOP、UQRY, 其中  UCR是所有表的原始創建用戶,  UOP是UCR用戶對應的程序操作用戶, UQRY是一個查詢用戶,有對UCR所有表的查詢權限。

應用側生產程序是通過UOP來連接數據庫,對所有的對象有DML的操作。除了我們自己的程序還有第三方程序通過UQRY來查詢UCR的表。

重點是UQRY在一節點, UOP在二節點, 這樣UCR的表會在兩個節點有大量的交叉查詢,從而導致GC。因此馬上建議應用側把所有的連接全部首先連接一節點。

修改完畢以後,GC問題解決


2. 內存問題

環境介紹: Linux 6.5 ,八路CPU, 64core ,內存256G

問題點:沒有啓用Hugepage,其中內存裏面PageTable佔用32G

free -m  可以看到系統有大量的內存被cached掉。

老庫的pagetable佔用到了29G!
 
dqg6ddspt1:~ # grep Page /proc/meminfo 
AnonPages:       5079144 kB
PageTables:     29073708 kB
AnonHugePages:   2412544 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
dqg6ddspt1:~ # 
dqg6ddspt1:~ # free -m
             total       used       free     shared    buffers     cached
Mem:        258298     122240     136058          0        178      85563
-/+ buffers/cache:      36498     221800
Swap:        32763          0      32763

調整參數如下:

vm.min_free_kbytes = 512000
vm.swappiness = 0
vm.dirty_ratio = 20
vm.vfs_cache_pressure = 200

調整以後需要重啓主機。


調整以後系統內存情況如下:


新庫的pagetable只佔用了128M。
 
huibuy1[/home/oracle]$grep Page /proc/meminfo 
AnonPages:       2297620 kB
PageTables:       128736 kB
AnonHugePages:         0 kB
HugePages_Total:   44036
HugePages_Free:    12544
HugePages_Rsvd:    12541
HugePages_Surp:        0
huibuy1[/home/oracle]$
huibuy1[/home/oracle]$
huibuy1[/home/oracle]$free -m
             total       used       free     shared    buffers     cached
Mem:        258159      94725     163433          0        269       1543
-/+ buffers/cache:      92912     165246
Swap:        32767          0      32767

做完以上調整,運行至今一月有餘,內存使用率,連接數,高耗事件等以前的異常情況全部消失。數據庫系統運行穩定

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章