上次通过巡检发现数据库以下问题:
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
做完以上调整,运行至今一月有余,内存使用率,连接数,高耗事件等以前的异常情况全部消失。数据库系统运行稳定