web-dev-qa-db-ja.com

bashフォークエラー(リソースが一時的に利用不可)が停止せず、強制終了/再起動しようとするたびに表示され続ける

5000個の並列接続用のiperfサーバーとして、制限付きサーバーを誤って使用しました。 (制限は1024プロセスです)ログインするたびに、次のように表示されます。

-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

それから、私はそれらを殺そうとします、しかし私がpsをするとき、私はこれを得ます:

-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

Killallや同様のことをしたときにも同じことが起こります。私もシステムを再起動しようとしましたが、これは再起動後に得られるものです:

-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$ 

だから基本的には何もできません。すべてのコマンドでこのエラーが発生します:/ただし、「終了」することはできます。

これは私が物理的にアクセスできないオフサイトサーバーなので、物理的にオフ/オンにすることはできません。

この問題を解決する方法はありますか?どんな助けにも感謝します。

13
user2662165

ログインできる場合、execを使用してすべてのコマンドを実行してみてください。 execを実行すると、再度ログインする必要があります。これは、execがシェルを強制終了するためです(実行するコマンドに置き換えることにより)。

execは、実行中のシェルを実行するプログラムに置き換えるため、余分なプロセススロットを占有しません。したがって、ulimitの制限を回避できるはずです。

22
nneonneo

最近同じ問題がありました。私の場合の理由は、私の所有権のもとで実行されていて、ほとんどすべてのリソースを消費し、コマンドに何も残さないコードがあったためです。これが私がやったこと、「exec top」で最大のリソースを消費しているPIDを特定する「exec kill -9」で、上記のコマンドで特定されたPIDをkillします。

PIDを強制終了した後、すべてが正常に戻り、再びログインすることができました。

5
MYD