Linuxシステムで可能なプロセスの数の最大制限は何ですか?どうやって見つけることができますか?
カーネルは、この情報をprocfs
にエクスポートする必要があります。
cat /proc/sys/kernel/pid_max
これは、システムがサポートできる一意のプロセス識別子の最大数です。
それはファイルであるため、/proc/sys/kernel/pid_max
は任意の有能なプログラミング言語から検査できます。
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です。
あなたの質問への短い答え: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
kernel.pid_max
は制限要因ですが、少なくとも同じくらい重要なのはkernel.threads-max
です。各ユーザーのデフォルトのnproc ulimitはkernel.threads-max
を2で割った値であり、すべてのスレッドはユーザーのnproc制限にカウントされることに注意してください。したがって、ps -u $USER
は、ユーザーがnprocの制限を使い果たしていないように見えるかもしれませんが、ps -L -u $USER
は非常に異なるストーリーを伝えることができます。
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の最大プロセス数を制限していますか?