web-dev-qa-db-fra.com

L'erreur bash fork (ressource temporairement indisponible) ne s'arrête pas et continue de s'afficher à chaque fois que j'essaye de tuer / redémarrer

J'ai utilisé par erreur un serveur limité comme serveur iperf pour 5000 connexions parallèles. (la limite est de 1024 processus) Maintenant, chaque fois que je me connecte, je vois ceci:

-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable

Ensuite, j'essaye de les tuer, mais quand je fais du ps, j'obtiens ceci:

-bash-4.1$ ps
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable

La même chose se produit lorsque je fais un killall ou des choses similaires. J'ai même essayé de redémarrer le système mais encore une fois, c'est ce que j'obtiens après le redémarrage:

-bash-4.1$ Sudo reboot
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 

Donc, fondamentalement, je ne peux rien faire. toutes les commandes obtiennent cette erreur:/Je peux cependant faire "exit".

Il s'agit d'un serveur hors site auquel je n'ai pas d'accès physique, je ne peux donc pas l'éteindre/l'allumer physiquement.

Des idées sur la façon de résoudre ce problème? J'apprécie grandement toute aide.

13
user2662165

Étant donné que vous pouvez vous connecter, vous souhaiterez peut-être essayer d'utiliser exec pour exécuter toutes vos commandes. Après avoir exécuté exec, vous devrez vous reconnecter, car exec tuera votre Shell (en le remplaçant par la commande que vous exécutez).

exec ne prendra pas un emplacement de processus supplémentaire car il remplacera le shell en cours d'exécution par le programme à exécuter. Ainsi, il devrait pouvoir contourner la restriction ulimit.

22
nneonneo

J'ai eu le même problème récemment. Dans mon cas, la raison était qu'il y avait du code qui s'exécutait sous ma propriété et consommait presque toutes les ressources ne laissant rien pour mes commandes. Voici ce que j'ai fait, "exec top" pour identifier le PID qui consomme le maximum de ressources "exec kill -9" tuant le PID identifié par la commande ci-dessus.

Après avoir tué le PID, tout est revenu à la normale et j'ai pu me reconnecter.

5
MYD