docker-compose 部署 Redis 的一些警告

cnkker.com發表於2024-12-03

背景

核心引數 overcommit_memory警告

# WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. 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、1、2。

0,表示核心將檢查是否有足夠的可用記憶體供應用程序使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用程序。
1,表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
2,表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體。

第一步:
修改配置檔案 vim /etc/sysctl.conf, 寫入下面內容(注意是宿主機)

...
vm.overcommit_memory = 1

第二步:
使配置生效:

sysctl -p

TCP 連線數異常

WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

解決辦法:

需要修改docker-compose.yml,新增:

sysctls:
    - net.core.somaxconn=65535

重啟容器。

相關文章