数据库类服务在Linux上必须禁用THP,仅改enabled无效;需同步关闭defrag并设置内核参数transparent_hugepage=never,且数据库进程须重启验证。
数据库类服务在Linux上必须禁用THP,只改是无效的——和内核启动参数必须同步关闭,否则线程仍会后台扫描并触发内存抖动。
确认THP当前是否真正启用
别只看
,两个文件都要查:
输出含
表示启用;
才是禁用
同样必须是
,否则
照常运行
常见误判:输出为
—— 这仍是启用状态,方括号标出的才是当前生效项
永久禁用THP的可靠写法(非rc.local)
在systemd系统中不可靠,尤其RAC或容器环境易失效。推荐直接改内核参数:
Docker Desktop(linux)
当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。
下载
编辑
,在
末尾追加:
执行
(BIOS)或
(UEFI)
重启生效。该方式优先级最高,覆盖所有运行时设置
注意:某些旧版CentOS路径为
,先
确认路径
验证THP是否退出数据库进程空间
改完配置不等于进程已脱离THP影响,尤其Oracle RAC、MySQL等需显式重启:
查进程页使用:
——
值应长期为
Oracle RAC必须重启整个CRS栈:
,仅重启DB实例无效
MongoDB ≤7.0 日志若出现
,说明未真正禁用
对比前后,
应明显下降
最容易被忽略的是
开关和进程重启动作——很多故障现场查出来
已设
,但
仍是
,或者Oracle的
从开机就没重读过内存策略。
/sys/kernel/mm/transparent_hugepage/enableddefragkhugepagedenabledcat /sys/kernel/mm/transparent_hugepage/enabled[always][never]cat /sys/kernel/mm/transparent_hugepage/defrag[never]khugepagedalways [madvise] neverrc.local/etc/default/grubGRUB_CMDLINE_LINUXtransparent_hugepage=nevergrub2-mkconfig -o /boot/grub2/grub.cfg/boot/efi/EFI/redhat/grub.cfg/sys/kernel/mm/redhat_transparent_hugepage/ls /sys/kernel/mm/*huge*grep -i "anonhugepages\|thp" /proc/$(pgrep -f "mysqld")/smaps | grep -E "(AnonHugePages|MMU)"AnonHugePages:0crsctl stop crs && crsctl start crs"WARNING: Detected transparent hugepage support"perf stat -e major-faults,minor-faults -p $(pgrep -f "postgres")major-faultsdefragenabledneverdefrag[always]ocssd.bin