我的docker应用程序中有一个redis服务:
docker-compose-dev.yml
web:
build:
context: ./services/web
dockerfile: Dockerfile-dev
volumes:
- './services/web:/usr/src/app'
ports:
- 5001:5000
environment:
- FLASK_ENV=development
- APP_SETTINGS=brandio.config.DevelopmentConfig
- DATABASE_URL=postgres://postgres:postgres@web-db:5432/web_dev
- DATABASE_TEST_URL=postgres://postgres:postgres@web-db:5432/web_test
- SECRET_KEY=my_precious
depends_on:
- web-db
- redis
redis:
image: redis:5.0.3-alpine
restart: always
expose:
- '6379'
ports:
- '6379:6379'
但是由于某些内存问题,我的网络似乎堵塞了。
日志:
redis_1 | 1:C 09 May 2019 21:06:32.979 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1 | 1:C 09 May 2019 21:06:32.981 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1 | 1:C 09 May 2019 21:06:32.981 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1 | 1:M 09 May 2019 21:06:32.986 * Running mode=standalone, port=6379.
redis_1 | 1:M 09 May 2019 21:06:32.986 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1 | 1:M 09 May 2019 21:06:32.986 # Server initialized
redis_1 | 1:M 09 May 2019 21:06:32.986 # 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.
为了解决这些警告,我遵循了以下引用链接:
- 将somaxconn提高到511以上 1417:M 10月25日06:13:31.840#警告:由于/ proc / sys / net / core / somaxconn设置为较低的值,因此无法强制执行511的TCP待办事项设置。 要解决此警告,您必须将新配置设置为/etc/rc.local,以使该设置在重新启动后仍然存在
$〜: sudo nano /etc/rc.local
添加此内容:
sysctl -w net.core.somaxconn = 65535
下次重新启动时,新设置将允许65535个连接,而不是以前的128个。
和:
- 禁用THP 1417:M 10月25日06:13:31.840#警告您的内核中启用了透明大页面(THP)支持。这将在Redis中造成延迟和内存使用问题。要解决此问题,请以根用户身份运行命令“从不回显> / sys / kernel / mm / transparent_hugepage / enabled”,并将其添加到您的/etc/rc.local中,以便在重启后保留设置。禁用THP后必须重新启动Redis 只需按照警告中的说明运行建议的命令,即可轻松解决此问题。
从不回显> / sys / kernel / mm / transparent_hugepage / enabled
转到/etc/rc.local
$〜: sudo nano /etc/rc.local
添加此内容:
从不回显> / sys / kernel / mm / transparent_hugepage / enabled
我在本地计算机上执行了这些提示,然后重新启动,但是警告仍然存在。
到目前为止,我的web
服务只有一个Dockerfile。
如何使用Dockerfile修复这些Redis警告?