Ich versuche, über 4000 Docker-Container über separate Dämonen zu erstellen (um die Barriere von 1023 Veths pro Brücke zu umgehen). Aber ich bekomme
bash: fork: Speicher kann nicht zugewiesen werden
Fehler bei etwa 1800. Ich habe die systemweiten Ressourcen erhöht ( ulimit
) und es sind noch genügend Inodes und Speicher übrig. Docker Version 1.8 RedHat Version 7
Antwort1
Bash wird nicht verwendet vfork
und Bash ist riesig.
Dies führt dazu, dass viele Forks viel virtuellen Speicher verbrauchen.
Dies ist höchstwahrscheinlich ein Problem, das durch die tatsächlichen Speicherressourcen des Systems verursacht wird, und nicht durch etwas, das Sie darüber steuern können ulimit
.
Haben Sie versucht, die Bourne Shell oder ksh93 zu verwenden? Beide dienen vfork()
zur Leistungsoptimierung.
Antwort2
Das Problem lag beim Docker-Zombie-Prozess, der die Kernel-Prozesskapazität auffraß. Das Problem konnte durch Erhöhen von kernel.pid_max gelöst werden.