Das Problem wird durch TasksMax verursacht systemd-Attribut. Es wurde in systemd 228 eingeführt und nutzt das Cgroups-PID-Subsystem, das im Linux-Kernel 4.3 eingeführt wurde. Ein Aufgabenlimit von 512 ist also in systemd aktiviert, wenn Kernel 4.3 oder neuer läuft. Das Feature wird hier angekündigt und wurde in diesem Pull-Request eingeführt und die Standardwerte wurden durch diesen Pull-Request gesetzt. Nach dem Upgrade meines Kernels auf 4.3, systemctl status docker zeigt eine Tasks an Zeile:
# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/etc/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2016-01-15 19:58:00 CET; 1min 52s ago
Docs: https://docs.docker.com
Main PID: 2770 (docker)
Tasks: 502 (limit: 512)
CGroup: /system.slice/docker.service
Einstellung TasksMax=infinity im [Service] Abschnitt von docker.service behebt das Problem. docker.service ist normalerweise in /usr/share/systemd/system , kann aber auch in /etc/systemd/system eingefügt/kopiert werden um zu vermeiden, dass es vom Paketmanager überschrieben wird.
Eine Pull-Anforderung erhöht TasksMax für die docker-Beispiel-systemd-Dateien, und ein Arch-Linux-Fehlerbericht versucht, dasselbe für das Paket zu erreichen. Es gibt einige zusätzliche Diskussionen im Arch Linux Forum und in einem Arch Linux Fehlerbericht bezüglich lxc.
DefaultTasksMax kann im [Manager] verwendet werden Abschnitt in /etc/systemd/system.conf (oder /etc/systemd/user.conf für vom Benutzer ausgeführte Dienste), um den Standardwert für TasksMax zu steuern .
Systemd wendet auch ein Limit für Programme an, die von einer Login-Shell ausgeführt werden. Diese sind standardmäßig 4096 pro Benutzer (wird auf 12288 erhöht ) und sind als UserTasksMax konfiguriert im [Login] Abschnitt von /etc/systemd/logind.conf .
Die Antwort von cdauth ist richtig, aber es gibt noch ein weiteres Detail hinzuzufügen.
Auf meinem Ubuntu 16.04-System mit systemd 229 und einem 4.3-Kernel wurde standardmäßig ein 512-PID-Limit für Sitzungsbereiche erzwungen, selbst wenn UserTasksMax auf den neuen, erhöhten Standardwert von 12288 eingestellt war. Daher war jeder Benutzersitzungsbereich auf 512 Threads begrenzt.
Die einzige Möglichkeit, das Limit zu entfernen, war das Setzen von DefaultTasksMax=unlimited in /etc/systemd/system.conf und systemctl daemon-reexec (oder Neustart).
Sie können dies überprüfen, indem Sie systemctl status ausgeben , Auswählen eines Sitzungsbereichs und cat /sys/fs/cgroup/pids/user.slice/user-${UID}.slice/session-FOO.scope/pids.max .