web-dev-qa-db-fra.com

Comment augmenter le nombre maximum de forks dans Ubuntu 16.04

J'essaie de faire tourner 1000x conteneurs Docker via:

_Nohup docker run --rm --name n-$1-$2 n-v2 bash -c "/root/sw/run.sh $1 $2" 2> ~/logs/log-$1-$2.log &
_

Mais après environ 500 conteneurs, l’erreur suivante commence à apparaître:

_fork: retry: No child processes
_

Le serveur sur lequel j'exécute a 48x cœurs et 192 Go de RAM ... Je devrais pouvoir faire tourner plusieurs milliers de ces conteneurs sans aucun problème ... existe-t-il un moyen d'augmenter cette limite?

Après avoir fait quelques recherches sur Google, je me suis rendu compte que je pouvais vérifier le nombre maximal de fourches via _ulimit -u_ ... y a-t-il un moyen de changer cela?

La réponse de _Soren A_ semble légitime, mais elle ne semble pas avoir résolu le problème. Je peux obtenir environ 12287 threads (sélectionnés via _cat /sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.current_) avant de commencer à traiter le même problème ... mes limites strictes et souples dans _/etc/security/limits.conf_ sont définies sur _99999999_ et pourtant je suis toujours étant plafonné à environ _12287_

1
CaffeineAddiction

Vous pouvez définir les valeurs temporaires avec ulimit -u <value> ou de manière permanente dans /etc/security/limits.conf avec des lignes telles que

*    hard    nproc  64000
*    soft    nproc  64000

Ou la même chose dans un fichier conf dans /etc/security/limits.d, ex. /etc/security/limits.d/90-nproc.conf si vous le souhaitez.

Au lieu de le définir pour tous les utilisateurs (*), vous pouvez le faire uniquement pour l'utilisateur qui démarre vos processus, afin que les autres utilisateurs ne puissent pas récupérer autant de ressources sur votre système.

1
Soren A