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


31

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

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

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


2
スワップがオーバーロードされているようです(/ tmpファイルシステムがいっぱいの可能性があります)
ランバート

2
-aのulimit、多分あなたは、いくつかのプロセス制限をヒット
c4f4t0r

回答:


20

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


9

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

1
このエラーが発生した場合、「再試行」とは、リソースが使用可能になるまで繰り返し試行することを意味しますか?
-DaveTheMinion

@DavidBそれともそれはやったリトライが、失敗しました。
クサラナンダ

@Kusalanandaわかりました、ありがとう。
DaveTheMinion

0

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

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

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


ユーザーに属するすべての単一プロセスを強制終了することは、少し手間がかかります。また、そのyumコマンドはおそらくフォークすることもできません。
クサラナンダ

yumコマンドは、rootとは異なるユーザーで問題が発生したと仮定して、rootユーザーを介して実行されます
Arun

シェルがフォークdfに失敗すると、実行中に問題が発生しsudoます。
クサラナナンダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.