docker启动redis官方镜像的三个警告的通用解决办法

前言

… …

警告信息

如下所示:

# WARNING: The TCP backlog setting of 511 cannot be enforced because
/proc/sys/net/core/somaxconn is set to the lower value of 128
# 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.
解决办法
关于TCP backlog的设置
  • 提示信息
WARNING: The TCP backlog setting of 511 cannot be enforced because
/proc/sys/net/core/somaxconn is set to the lower value of 128

tcp 连接数设置为 128 太小

  • 处理措施(宿主机执行操作)
]# cat >> /etc/sysctl.conf <<-EOF
net.core.somaxconn=551   # 这里的数据根据生产的需要和电脑的性能进行调整,必须大于等于 551
EOF
]# sysctl -p
关于overcommit_memory的设置
  • 提示信息
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.

overcommit_memory 的值设置为0时 在低内存条件下,后台保存可能会失败

  • 处理措施(宿主机执行操作)
]# cat >> /etc/sysctl.conf <<-EOF
vm.overcommit_memory=1
EOF
]# sysctl -p
关于 THP 支持的设置
  • 提示信息
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.

内核中启用了透明大页面(THP)支持。 这将导致Redis的延迟和内存使用问题

  • 处理措施(宿主机执行操作)
]# cat >> /etc/rc.local <<-EOF
echo never > /sys/kernel/mm/transparent_hugepage/enabled
EOF
]# chmod +x /etc/rc.local
]# source /etc/rc.local
重启redis服务
]# /data/deploy/redis
]# docker-compose down
]# docker-compose up -d
]# docker exec redis cat /proc/sys/net/core/somaxconn
128
  • 当发现somaxconn的值还是128,没变为551时,说明没有在容器中生效,需要在容器执行命令,新部署redis的docker-compose.yml文件如下所示
version: "3.5"
services:
  redis:
    image: redis:5.0.0
    container_name: redis
    hostname: redis
    privileged: true
    user: root
    ports:
      - 6379:6379
    command:          # 多个命令同时执行
      - /bin/bash 
      - -c 
      - |                 
        echo 551 > /proc/sys/net/core/somaxconn	# 关键命令
        redis-server --requirepass na1234
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /data/volume/redis:/data
    restart: always
    tty: true

更新部署

]# docker-compose up -d
]# docker exec redis cat /proc/sys/net/core/somaxconn
551
结语

… …

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值