web-dev-qa-db-ja.com

Linuxのプロセスの最大数

Linuxシステムで可能なプロセスの数の最大制限は何ですか?どうやって見つけることができますか?

56
kdexter

カーネルは、この情報をprocfsにエクスポートする必要があります。

cat /proc/sys/kernel/pid_max

これは、システムがサポートできる一意のプロセス識別子の最大数です。

それはファイルであるため、/proc/sys/kernel/pid_maxは任意の有能なプログラミング言語から検査できます。

47
user257111

sysctl kernel.pid_max

または

cat/proc/sys/kernel/pid_max

Ninefingersが提案したとおり。

完全を期すために、/ proc/syskernel/pid_maxに書き込むことで一時的に変更するか、以下を追加して永続的に変更できます。

kernel.pid_max = 4194303

/etc/sysctl.confに。 4194303は、x86_64の最大制限およびx86の32767です。

20
Lester Cheung

あなたの質問への短い答え:Linuxシステムで可能なプロセスの数はUNLIMITEDです。

ただし、ユーザーごとのプロセス数には制限があります(rootには制限がありません)。

また、以下のコマンドでユーザー制限を確認できます(「最大ユーザープロセス」に相当)。

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256447
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 128000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 500000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

特定のユーザーのプロセス数の制限を増やしたい場合(たとえば:hadoop)、以下に/ etc/security/limits.confのエントリを作成する必要があります

hadoop - nproc 500000
16
Ankit Singhal

kernel.pid_maxは制限要因ですが、少なくとも同じくらい重要なのはkernel.threads-maxです。各ユーザーのデフォルトのnproc ulimitはkernel.threads-maxを2で割った値であり、すべてのスレッドはユーザーのnproc制限にカウントされることに注意してください。したがって、ps -u $USERは、ユーザーがnprocの制限を使い果たしていないように見えるかもしれませんが、ps -L -u $USERは非常に異なるストーリーを伝えることができます。

5
Andy Grimm

Mongodbプロセスはmax nproc = threads-max / 2でしか作成できないという意味ですか?

私は無制限としてnprocを増加しようとしているので。

次のように/etc/security/limits.confに制限を設定しようとしました:mongodb soft nproc unlimited mongodb hard nproc unlimited mongodb soft nofile 50000 mongodb hard nofile 50000 mongodb soft sigpending unlimited mongodb hard sigpending unlimitedただし、完全な再起動後でもmongodbプロセスには反映されませんでした。

その後、ulimit -u unlimitedコマンドを/etc/init.d/mongodbに入れようとしましたが、このファイルで開始しようとした後、

/etc/init.d/mongodb: 67: ulimit: Illegal option -u

エラー。これはkernel.threads-maxがmongodbの最大プロセス数を制限していますか?

0
hardc0der