因为自从接触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
原文地址:https://www.cnblogs.com/dayu-liu/p/9502528.html
时间: 2024-10-12 16:07:35