Ошибки типа OOM allocating и ZERO RANDOM FD#
Проблема:
При запуске сервисов в Docker на RHEL 8 или RHEL 9 могут возникать ошибки, связанные с выделением файловых дескрипторов, такие как "OOM allocating" и "ZERO RANDOM FD".
Причина:
Проблема связана с тем, как среда выполнения контейнеров обрабатывает лимиты на файловые дескрипторы (nofile
). По умолчанию среда выполнения контейнеров может устанавливать LimitNOFILE
в infinity
, что может привести к тому, что сервис попытается выделить чрезмерное количество файловых дескрипторов, вызывая эти ошибки.
Обходное решение:
Чтобы устранить эту проблему, можно установить явные лимиты на файловые дескрипторы (ulimit
) для контейнера.
Это можно сделать, добавив следующую конфигурацию в Docker Compose файл для соответствующего сервиса:
licenses:
...
network_mode: host
container_name: luna-licenses
ulimits:
nofile:
soft: 200000
hard: 200000
environment:
...
Или запустив контейнер с соответствующими параметрами:
docker run --ulimit nofile=200000:200000
Это устанавливает разумный предел для количества файловых дескрипторов, которые могут быть открыты процессом, предотвращая ошибки выделения.
Примечание. Это обходное решение специфично для RHEL 8 и RHEL 9. Проблема не наблюдалась на других дистрибутивах.