运行redis:Alpine Docker镜像时如何修复警告
如果我使用命令运行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:alpineCOPY somaxconn /proc/sys/net/core/somaxconn
COPY sysctl.conf /etc/sysctl.conf
CMD ["redis-server", "--appendonly", "yes"]
我的本地文件somaxconn
包含单个条目511
,sysctl.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/shroot@9e850908ddb7:/# sysctl net.core.somaxconn
net.core.somaxconn = 4096
...
:vm.overcommit_memory
当前不允许通过--sysctl
参数设置,这同样适用于THP(transparent_hugepage),这是因为它们没有命名空间。因此,要在Linux主机上运行的容器中修复这些警告,可以直接在主机上更改它们。这里是相关的问题:
- #19
- #55
您不需要特权模式即可采用 方法。
以上是 运行redis:Alpine Docker镜像时如何修复警告 的全部内容, 来源链接: utcz.com/qa/433786.html