以 bitnami/redis 为例,在 kubernetes 中关闭 THP(Transparent Huge Pages)

momo314相同方式共享非商业用途署名转载

 redis 启动时的警告日志:

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').

Transparent Huge Pages (THP) 会导致 redis 内存占用过高 或被 OOMKilled。

在 kubernetes 中,以 bitnami/redis 为例,如果想要关闭 THP ,只需要在 Init-Container 中添加如下脚本即可:

sysctlImage:
  enabled: true
  mountHostSys: true
  command:  
    - /bin/sh 
    - -c 
    - |- 
      install_packages procps
      sysctl -w net.core.somaxconn=65535
      sysctl -w net.ipv4.tcp_max_syn_backlog=65535
      if [ ! -e "/host-sys/kernel/mm/transparent_hugepage/enabled" ]; then
        echo never > /host-sys/kernel/mm/transparent_hugepage/enabled
        echo "THP has been disabled."
      fi

注:因为 THP 的更改是整个 k8s 节点层面的,无法在 containerd / docker 内进行单独更改,所以此脚本将会禁用整个 k8s 节点的 THP。所以,需要使用设置 mountHostSys: true 将将主机的/sys文件夹挂载到/host-sys

✎﹏ 本文来自于 momo314和他们家的猫,文章原创,转载请注明作者并保留原文链接。