Il problema è causato dal TasksMax
attributo systemd. È stato introdotto in systemd 228 e fa uso del sottosistema cgroups pid, che è stato introdotto nel kernel linux 4.3. Un limite di attività di 512
è quindi abilitato in systemd se è in esecuzione il kernel 4.3 o successivo. La funzionalità è annunciata qui ed è stata introdotta in questa richiesta pull e i valori predefiniti sono stati impostati da questa richiesta pull. Dopo aver aggiornato il mio kernel alla 4.3, systemctl status docker
visualizza un Tasks
riga:
# 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
Impostazione TasksMax=infinity
nel [Service]
sezione di docker.service
risolve il problema. docker.service
di solito è in /usr/share/systemd/system
, ma può anche essere inserito/copiato in /etc/systemd/system
per evitare che venga sovrascritto dal gestore pacchetti.
Una richiesta pull sta aumentando TasksMax
per i file systemd di esempio docker e una segnalazione di bug di Arch Linux sta cercando di ottenere lo stesso risultato per il pacchetto. C'è qualche altra discussione in corso sul forum di Arch Linux e in un bug report di Arch Linux riguardante lxc.
DefaultTasksMax
può essere utilizzato nel [Manager]
sezione in /etc/systemd/system.conf
(o /etc/systemd/user.conf
per i servizi gestiti dall'utente) per controllare il valore predefinito per TasksMax
.
Systemd applica anche un limite per i programmi eseguiti da una shell di login. L'impostazione predefinita è 4096
per utente (sarà aumentato a 12288
) e sono configurati come UserTasksMax
nel [Login]
sezione di /etc/systemd/logind.conf
.
la risposta di cdauth è corretta, ma c'è un altro dettaglio da aggiungere.
Sul mio sistema Ubuntu 16.04 con systemd 229 e un kernel 4.3, un limite di 512 pid è stato applicato per impostazione predefinita sugli ambiti di sessione anche quando UserTasksMax era impostato sul nuovo valore predefinito aumentato di 12288. Quindi qualsiasi ambito di sessione utente era limitato a 512 thread.
L'unico modo che ho trovato per rimuovere il limite era impostare DefaultTasksMax=unlimited
in /etc/systemd/system.conf
e systemctl daemon-reexec
(o riavviare).
Puoi controllare se questo sta accadendo emettendo systemctl status
, selezionando un ambito di sessione e cat /sys/fs/cgroup/pids/user.slice/user-${UID}.slice/session-FOO.scope/pids.max
.