ulimit -uが実行中のプロセスの数よりはるかに大きい場合、なぜ問題が発生するのですか?

ulimit -uが実行中のプロセスの数よりはるかに大きい場合、なぜ問題が発生するのですか?

200個のプロセスを実行していますが、ulimit -u400個がいくつかの問題を引き起こしているようです。

$ ps -A | wc -l
199
$ ulimit -u 400
zsh: fork failed: resource temporarily unavailable

混乱しています。制限に達した理由は何ですか?

編集する:最初にulimit -u与えられた

$ ulimit -u
47334

ベストアンサー1

Linuxで数には含まれますulimit -uが、通常は表示されませんps -ALフラグを追加する必要があります。

たとえば、私のコンピュータでは次のようになります。

% ps -A | wc -l 
124
% ps -AL | wc -l
155

31の追加プロセスが実行されていることがわかります。これは通常、ビューに隠されているスレッドです。

Javaやその他の高度にスレッド化されたアプリケーションを使用すると、思ったよりも多くのスレッド/プロセスを簡単に実行できます。あなたのulimit -u価値はこれを考慮するべきです。

ulimitこれは、デフォルトでは、次の設定に付属のRedHatシステムで多くのJavaアプリケーションを実行している人に予期せず影響を与える可能性があります。

% cat /etc/security/limits.d/20-nproc.conf 
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     4096
root       soft    nproc     unlimited

おすすめ記事