Le problème est causé par le TasksMax
attribut systemd. Il a été introduit dans systemd 228 et utilise le sous-système cgroups pid, qui a été introduit dans le noyau linux 4.3. Une limite de tâches de 512
est donc activé dans systemd si le noyau 4.3 ou plus récent est en cours d'exécution. La fonctionnalité est annoncée ici et a été introduite dans cette demande d'extraction et les valeurs par défaut ont été définies par cette demande d'extraction. Après avoir mis à jour mon noyau vers 4.3, systemctl status docker
affiche un Tasks
ligne :
# 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
Réglage TasksMax=infinity
dans le [Service]
partie de docker.service
résout le problème. docker.service
est généralement en /usr/share/systemd/system
, mais il peut aussi être mis/copié en /etc/systemd/system
pour éviter qu'il ne soit écrasé par le gestionnaire de paquets.
Une pull request augmente de TasksMax
pour les fichiers systemd d'exemple de docker, et un rapport de bogue Arch Linux tente d'obtenir la même chose pour le package. Il y a des discussions supplémentaires en cours sur le forum Arch Linux et dans un rapport de bogue Arch Linux concernant lxc.
DefaultTasksMax
peut être utilisé dans le [Manager]
rubrique en /etc/systemd/system.conf
(ou /etc/systemd/user.conf
pour les services gérés par l'utilisateur) pour contrôler la valeur par défaut de TasksMax
.
Systemd applique également une limite pour les programmes exécutés à partir d'un shell de connexion. Ceux-ci par défaut sont 4096
par utilisateur (sera augmenté à 12288
) et sont configurés comme UserTasksMax
dans le [Login]
partie de /etc/systemd/logind.conf
.
La réponse de cdauth est correcte, mais il y a un autre détail à ajouter.
Sur mon système Ubuntu 16.04 avec systemd 229 et un noyau 4.3, une limite de 512 pid était appliquée par défaut sur les portées de session, même lorsque UserTasksMax était défini sur la nouvelle valeur par défaut augmentée de 12288. Ainsi, toute portée de session utilisateur était limitée à 512 threads. /P>
Le seul moyen que j'ai trouvé pour supprimer la limite était de définir DefaultTasksMax=unlimited
en /etc/systemd/system.conf
et systemctl daemon-reexec
(ou redémarrez).
Vous pouvez vérifier si cela se produit en émettant systemctl status
, en choisissant une portée de session et cat /sys/fs/cgroup/pids/user.slice/user-${UID}.slice/session-FOO.scope/pids.max
.