Transparent Huge Pages(透明大页)对redis的影响

Transparent Huge Pages(透明大页)是 Linux 内核的内存管理特性,但 Redis 对内存页大小非常敏感,THP 会导致:

  • Redis 内存分配 / 释放的延迟增加(毫秒级 → 秒级)
  • 内存碎片率升高,占用更多物理内存
  • 高并发场景下性能波动明显

1、临时禁用 THP(立即生效,无需重启系统)

执行以下命令(必须用 root 用户):

1. 临时禁用 THP(立即生效)

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag # 顺带禁用碎片整理

2. 验证是否禁用成功(返回 never 则生效)

cat /sys/kernel/mm/transparent_hugepage/enabled

会输出结果:always madvise never

2、永久禁用 THP(CentOS 8.5 专属,替代 rc.local)

CentOS 8.5 不再默认启用 rc.local,需通过 systemd 服务实现开机自启禁用 THP:

复制代码
cat > /etc/systemd/system/disable-thp.service << EOF
[Unit]
Description=Disable Transparent Huge Pages (THP) for Redis
Before=redis.service  # 确保在Redis启动前执行
DefaultDependencies=no
After=sysinit.target local-fs.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

启用并启动该服务

1. 重新加载 systemd 配置

systemctl daemon-reload

2. 设置开机自启

systemctl enable disable-thp.service

3. 立即启动(验证是否生效)

systemctl start disable-thp.service

4. 检查服务状态(显示 active (exited) 则正常)

systemctl status disable-thp.service

5. 重启系统后验证 THP 状态

reboot ---重启系统,注意!!!

cat /sys/kernel/mm/transparent_hugepage/enabled

6. 查看 Redis 启动日志(无 THP 警告)

tail -f /var/log/redis/redis-server.log

相关推荐
‎ദ്ദിᵔ.˛.ᵔ₎4 小时前
linux 进程信号(下)
linux·运维·服务器
禾小西4 小时前
06丨Redis 数据同步:主从库如何实现数据一致?
数据库·redis·php
skywalk81634 小时前
在FreeBSD系统的linux仿真环境下安装和使用kiro 这个亚马逊的AI agent
linux·人工智能·freebsd·kiro
Mikko74 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
Madison-No74 小时前
多语言聊天大模型--测试报告
linux·git·python·selenium·jmeter·自动化·postman
Liuqy-055 小时前
特殊进程——孤儿、僵尸、守护进程
linux·运维·服务器
流浪0015 小时前
Linux系统篇47——线程(十二) POSIX 信号量与环形队列,把判空判满提前到访问之前
linux·操作系统·线程·信号量·环形队列
我不会插花弄玉5 小时前
4.string类型【由浅入深-redis】
数据库·redis·缓存
咖丨喱5 小时前
【MMC Core + hc16 Host(WiFi SDIO 如何落到控制器)】
linux
等我调个Bug5 小时前
【Linux系统篇】权限
linux·服务器