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
.