Я пытаюсь создать 4000+ контейнеров Docker через отдельные демоны (чтобы избежать барьера в 1023 veth на мост). Но я получаю
bash: fork: Невозможно выделить память
ошибка около 1800. Я увеличил системные ресурсы ( ulimit
) и осталось много инодов и памяти. Docker версии 1.8 RedHat версии 7
решение1
Bash не использует vfork
, а bash огромен.
Это приводит к тому, что многие форки потребляют много виртуальной памяти.
Вероятнее всего, проблема вызвана реальными ресурсами памяти в системе, а не чем-то, что вы можете контролировать с помощью ulimit
.
Пробовали использовать Bourne Shell или ksh93? Оба используют vfork()
для оптимизации производительности.
решение2
Проблема была в процессе Docker Zombie, который поглощал емкость процесса ядра. Решить проблему удалось, увеличив kernel.pid_max.