【问题标题】:Solving Redis warnings on overcommit_memory and Transparent Huge Pages for Ubuntu 16.04 on EC2为 EC2 上的 Ubuntu 16.04 解决关于 overcommit_memory 和透明大页面的 Redis 警告
【发布时间】:2017-05-03 09:03:37
【问题描述】:

在新的 Ubuntu 16.04 EC2 实例上,警告显示如下:

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
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 never > /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.

如何永久消除它们?

【问题讨论】:

    标签: ubuntu amazon-ec2 redis sysctl huge-pages


    【解决方案1】:

    就像警告所暗示的那样,只需将行 vm.overcommit_memory=1 添加到 /etc/sysctl.conf 的底部,类似于 sudo vi /etc/sysctl.conf

    但是权限不允许您按照警告提示编辑 THP,所以改为这样做

    sudo apt install hugepages
    

    并将命令sudo hugeadm --thp-never 添加到.bashrc 的底部,例如sudo vi ~/.bashrc

    然后只需sudo reboot,下次您在运行 SSH 时运行 redis-server,警告就消失了!

    【讨论】:

    • 让警告消失真的很危险吗?什么时候需要“后台保存”在内存不足的情况下失败?盲目设置'vm.overcommit_memory=1'会不会有问题?
    • @ScottSkiles:我相信 Redis 会通过调用 fork() 进行后台保存,这会立即加倍明显的内存使用。但是由于在父项发生变化之前它都是虚拟内存,所以在保存完成之前一切都应该没问题。
    • 如何在 docker 容器中做到这一点?
    • @HerilMuratovic 根据我在 github 上看到的讨论,这些设置(可能)在主机系统上进行,docker 从那里获取它们。例如:github.com/docker-library/redis/issues/19#issuecomment-96080885
    【解决方案2】:

    使用 Linux 和 Ubuntu,我在运行 redis-server 之前这样做了,它似乎可以工作......

    sudo add-apt-repository ppa:redislabs/redis
    sudo apt-get update
    sudo apt-get install redis
    

    https://redis.io/download

    【讨论】:

    • 很好,这似乎是一个更好的修复(通过本机库实现)。如果有人可以验证这解决了问题,那么我会将其授予新的最佳答案。
    • 在我的例子中,通过指定的 PPA 将 redis 升级到 v.6.2.6 删除了透明大页面警告,但不是 overcommit_memory 警告
    猜你喜欢
    • 2017-07-24
    • 2013-04-10
    • 2012-10-09
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2017-01-23
    相关资源
    最近更新 更多