web-dev-qa-db-ja.com

フォーク:再試行:リソースは一時的に利用不可

取得したサーバーに接続している間、

-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$ df -h
-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$ 
-bash-4.1$ ls -lrth
-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: Interrupted system call
-bash-4.1$ 
-bash-4.1$ ps -aef | grep `pwd`
-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$ 

なぜこれが来るのですか?そして、どうすれば解決できますか?

33
Rakesh KR

これは、サーバー自体(または)ユーザーアカウントに固有のリソース制限が原因である可能性があります。シェルの制限はulimit -aで確認できます。 Esp ulimit -u maxユーザープロセスを確認します。maxプロセスに達した場合、forkは新しいエラーを作成できず、そのエラーで失敗します。これは、スワップ/メモリリソースの問題が原因である可能性もあります

21
VenkatC

fork:リソースは一時的に利用できません

エラーは、現在のシェルリソースが制限されていることを意味します(ulimit -aで制限を確認してください)。したがって、別のシェルで試すか、シェルで使用可能なリソースとオペレーティングシステム上で作成されるプロセスを制御するulimitコマンドを使用してリソースを増やすことができます。

制限を増やすには、次のコマンドを実行してみてください。

ulimit -Sn unlimited && ulimit -Sl unlimited

ソフト制限をハード制限に上げる、または:

ulimit -l unlimited
ulimit -n 10240 

プロセスの最大サイズを無制限に、開いているファイルの最大数を10240に設定します。

詳細については、help ulimitを参照してください。

永続化するには、上記の設定をスタートアップrcファイルに追加します(例:~/.bashrc)。


/etc/sysctl.conf(man sysctl.confを参照)を使用して、カーネルの制限を増やすこともできます。

kern.maxprocperuid=1000
kern.maxproc=2000
13
kenorb

この問題は、次のコマンドを使用して解決することもできます。

yum install psmisc
killall -STOP -u user1
killall -KILL -u user1

ここでuser1は、制限を超えたユーザーグループです。

0
Arun