GNU/Linux >> Linux Esercitazione >  >> Linux

La creazione di thread fallisce con "Risorsa temporaneamente non disponibile" con il kernel 4.3

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 .


Linux
  1. Creazione di volumi logici in Linux con LVM

  2. Linux – Il terminale Gnome non si avvia?

  3. Bloccare gli aggiornamenti del kernel con Dpkg?

  4. Comandi Docker sospesi senza risposta

  5. Ottimizzazione del kernel con contenitore Docker privilegiato

Creazione di elenchi di parole con Crunch su Kali Linux

Tutorial Podman - Inizia con Podman

Creazione di un sistema ibrido Linux-Windows con Cygwin

Come distribuire CouchDB come cluster con Docker

Installa WordPress con Docker su Ubuntu 20.04

Cosa può causare un comando "Risorsa temporaneamente non disponibile" sul comando sock send()