GNU/Linux >> Tutoriels Linux >  >> Linux

La création de threads échoue avec "Ressource temporairement indisponible" avec le noyau 4.3

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 .


Linux
  1. Traçage du noyau avec trace-cmd

  2. Analyser le noyau Linux avec ftrace

  3. Créer des volumes logiques sous Linux avec LVM

  4. Comment réparer su USER échoue avec su :impossible de créer un processus enfant :Ressource temporairement indisponible Erreur dans CloudLinux ?

  5. Commandes Docker suspendues sans réponse

Créer des listes de mots avec Crunch sur Kali Linux

Tutoriel Podman - Premiers pas avec Podman

Créer un système hybride Linux-Windows avec Cygwin

Comment déployer CouchDB en tant que cluster avec Docker

Installer WordPress avec Docker sur Ubuntu 20.04

Qu'est-ce qui peut provoquer une "Ressource temporairement indisponible" sur la commande sock send()