一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

为什么Oracle 19c在云环境里必须禁用透明大页

时间:2026-07-10 10:52:03 编辑:袖梨 来源:一聚教程网

Oracle 19c云环境必须永久禁用transparent_hugepage=always,否则因与use_large_pages=only冲突导致ORA-27102、CRS超时或节点驱逐;需修正grub配置引号问题,验证AnonHugePages=0 kB、HugePages_Total>0且HugePages_Rsvd>0,并确保pmon进程含hugetlb参数。

Oracle 19c云环境必须禁用transparent_hugepage=always

不是“建议”,是硬性前提。云环境(尤其vmware、kvm、oci或aws ec2)中,transparent_hugepage=always会与oracle的use_large_pages=only直接冲突,导致实例启动时反复fallback到4kb页,触发ora-27102: out of memory或静默失败——表现为crs超时、pmon异常退出、节点被驱逐,而非明确报错。

云平台下THP引发TLB压力和内存碎片的真实表现

云虚拟化层本身已对内存做多次映射(guest物理→host物理→硬件物理),THP动态合并页会加剧页表层级和TLB miss。实测显示I/O延迟升高30%以上,cat /proc/meminfo | grep AnonHugePages非零时,

vmstat -s | grep "page"`常伴随高minor fault数;RAC节点间心跳超时频率上升,不是网络问题,而是TLB饱和后内存访问卡顿。</p><H3>/etc/default/grub修改常见翻车点(云镜像特有)</H3><p>云环境常用精简镜像,<code>/etc/default/grub
GRUB_CMDLINE_LINUX行末尾常缺闭合双引号,例如:
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never

这会导致grub2-mkconfig报错“unexpected end of file”,后续reboot仍加载THP。必须检查:

  • 双引号成对出现,无中文引号或换行截断
  • transparent_hugepage=never紧贴在quiet后,中间无空格或乱码
  • 执行grub2-mkconfig -o /boot/grub2/grub.cfg后,grep transparent_hugepage /proc/cmdline应输出transparent_hugepage=never

验证是否真正禁用THP不能只看/sys/kernel/mm/…

cat /sys/kernel/mm/transparent_hugepage/enabled显示[never]只是内核模块状态,不等于生效。关键验证点:

  • grep AnonHugePages /proc/meminfo必须返回AnonHugePages: 0 kB
  • grep -i huge /proc/meminfoHugePages_Total应为非零值(说明标准HugePages已预分配),且HugePages_Rsvd > 0(说明Oracle已成功绑定)
  • 重启后运行ps -eo pid,comm,args | grep pmon,进程参数里应含hugetlb字样

云环境中容易忽略的是:即使THP禁用,若vm.nr_hugepages没配够或memlock未设为unlimited,Oracle仍会退回到普通页——此时HugePages_Free接近HugePages_Total反而是失败信号。

热门栏目