当前位置: 首页 > 面试题库 >

运行redis:Alpine Docker镜像时如何修复警告

费秦迟
2023-03-14
问题内容

如果我使用命令运行redis:alpine Docker映像

docker run redis:alpine

我看到一些警告:

1:C 08 May 08:29:32.308 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'

1:M 08 May 08:29:32.311 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 08 May 08:29:32.311 # Server started, Redis version 3.2.8
1:M 08 May 08:29:32.311 # 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.
1:M 08 May 08:29:32.311 # 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.
1:M 08 May 08:29:32.311 * The server is now ready to accept connections on port 6379

我已尝试使用以下方法修复前两个警告Dockerfile

FROM redis:alpine
COPY somaxconn /proc/sys/net/core/somaxconn
COPY sysctl.conf /etc/sysctl.conf
CMD ["redis-server", "--appendonly", "yes"]

我的本地文件somaxconn包含单个条目511sysctl.conf其中包含行vm.overcommit_memory = 1。但是,在构建和运行容器时,我仍然收到相同的警告。

我如何摆脱这些警告?(在https://www.techandme.se/performance-tips-for-redis-cache-
server/中
提到了这些问题,但是在那里描述的解决方案涉及修改rc.local,似乎与Rasperry Pi有关。)


问题答案:

处理问题的不好方法 :用/proc只读文件系统对其进行修改,可以在特权模式下运行Docker,而不是在启动容器后对其进行修改。

如果以特权模式运行容器,则可以使用以下命令禁用THP:

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

正确的方法 :确保您运行较新版本的Docker(如果需要,请升级)。run子命令具有–sysctl选项:

$ docker run -ti --sysctl net.core.somaxconn=4096 --rm redis:alpine /bin/sh
root@9e850908ddb7:/# sysctl net.core.somaxconn
net.core.somaxconn = 4096
...

不幸的是
vm.overcommit_memory当前不允许通过--sysctl参数设置,这同样适用于THP(transparent_hugepage),这是因为它们没有命名空间。因此,要在Linux主机上运行的容器中修复这些警告,可以直接在主机上更改它们。这里是相关的问题:

  • #19
  • #55

您不需要特权模式即可采用 正确的 方法。



 类似资料:
  • 我目前正在学习java swing builder作为一项新的技术技能。我需要研究如何在画布上导入图像。是的,它成功导入,图像清晰且不模糊。然而,当我运行项目时,我导入到项目中的图像会变得模糊。我不知道为什么会这样。我研究了一些功能,比如缩放,但什么都没有发生,输出结果都一样,变得模糊。 图像尺寸:250x250 以下是我在项目中实现的代码: 不可运行项目和可运行项目的区别: 图像不模糊: 运行项

  • 我有一个针对Android9的应用程序,我注意到在Google Play发布前的报告中有一个新的部分叫做Android兼容性。这个新的部分列出了与使用不受支持的API有关的警告或错误。以下是问题之一,并作为greylisted API列出。有人能解释一下在这种情况下哪个是不受支持的API吗?使用似乎来自Android支持库,而不是我的代码。

  • 我在运行时出错。我做错了什么? @开发人员C:\laragon\www\GestionBAT npm运行开发 @开发C:\laragon\www\GestionBAT 混合 这是一种可以融入的化学反应 npm错误!错误1 npm错误!@开发: npm错误!退出状态1 npm错误 npm ERR C:\Users\alexi\AppData\Roaming\npm-cache_logs\2021-0

  • 我有客户端和服务器在一个单独的文件夹。我认为客户端脚本有错误。有谁能帮我解决问题。我想同时运行客户端和服务器。谢谢 我的文件夹结构 package.json在服务器文件夹内部

  • 我对Openshift Origin非常陌生。我现在正在尝试在OpenShift origin中部署docker容器的可能性。为此,我创建了一个非常简单的docker容器,它将两个数字相加并产生结果: https://github.com/abrahamjaison01/openshifttest 我在本地创建了一个docker映像,在docker hub中创建了一个公共docker映像: 我在本

  • 我在Ubuntu 18.04.1 LTS上安装了以下内容: 有人知道怎么修吗?