linux中的最大进程数
linux系统中可能的最大进程数限制是多少?如何找到它?您的内核应该在linux中的最大进程数,linux,process,operating-system,Linux,Process,Operating System,linux系统中可能的最大进程数限制是多少?如何找到它?您的内核应该在procfs中导出此信息: cat /proc/sys/kernel/pid_max 这是系统可以支持的唯一进程标识符的最大数目 由于它是一个文件,/proc/sys/kernel/pid_max可以从任何有能力的编程语言进行检查 sysctl kernel.pid_max 或 cat/proc/sys/kernel/pid_max 正如九怪所建议的那样 为完整起见,您可以通过写入/proc/syskernel/pid_ma
procfs
中导出此信息:
cat /proc/sys/kernel/pid_max
这是系统可以支持的唯一进程标识符的最大数目
由于它是一个文件,/proc/sys/kernel/pid_max
可以从任何有能力的编程语言进行检查
sysctl kernel.pid_max
或
cat/proc/sys/kernel/pid_max
正如九怪所建议的那样
为完整起见,您可以通过写入/proc/syskernel/pid_max临时更改它,或通过添加以下内容永久更改它:
kernel.pid_max=4194303
发送到/etc/sysctl.conf。4194303是x86_64的最大限制,32767是x86的最大限制。对您的问题的简短回答:linux系统中可能的进程数是无限的 但是每个用户的进程数是有限制的(除了没有限制的root用户) 您可以使用以下命令检查您的用户限制(适用于“最大用户进程”) 如果要增加特定用户(例如: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无限
mongodb硬盘nproc无限
mongodb软件文件50000
mongodb硬文件50000
mongodb软SIG无限
mongodb硬SIG无限
然而,即使在完全重新启动之后,它也没有反映mongodb进程
然后我尝试将ulimit-u unlimited
命令放到/etc/init.d/mongodb
中,但在尝试开始使用此文件之后,我得到了
/etc/init.d/mongodb:67:ulimit:非法选项-u
错误。这是内核。threads max
限制了mongodb的最大进程数吗?这可能是真的,但在大多数好的发行版中,这受到/etc/security/limits.conf的限制,它可以根据用户/组/域过滤最大进程数。ulimit
可能会将每个用户的最大进程数限制在最大pid以下,通过谷歌搜索,还有其他一些限制(但我找不到任何确定的来源来确认,比如LKML或一个著名的开发人员发布了它)代码>无效,对任何其他文件也无效。@immibis I编辑掉了伪C;希望我的编辑很快会被批准。只需尝试一下sysctl kernel.pid_max=4194304
,就成功了(Linux 3.10.25)@zed_0xff,只要您知道更改不是持久的,一切都好printf“%x\n”4194303
给出了3fffff
32位内核的实际最大值为32768,64位内核的实际最大值为4194304。但是,您将看到的最大PID值小于1。请参阅:有时上述更改需要重新启动才能使更改生效。这要求引用“无限制”的数字,因为ulimit意味着它没有设置限制(无限制),但调度程序允许的进程数不是无限制的。。。就像在无限中一样。ulimit不是问题所在。内核有一个4mln的硬限制,我认为它不可能是无限的,因为上一次,但并非最不重要的是硬件施加了限制。堆栈溢出是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。
hadoop - nproc 500000