【问题标题】:how to increase max number of process for Solaris 10 x86 server?如何增加 Solaris 10 x86 服务器的最大进程数?
【发布时间】:2015-05-15 13:04:53
【问题描述】:

我们有一个托管大量测试应用程序的测试服务器。当有很多进程(或线程)在运行时,我们发现无法创建新的进程或线程:

  • 对于 C 程序:“无法分叉,资源不可用”
  • 对于 java 程序:抛出异常“OutOfMemory,无法创建本机线程”

我认为这是由于对最大进程数的硬限制。我试图设置ulimit -n 255085。 ulimit 显示如下:

core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
open files                      (-n) 90000
pipe size            (512 bytes, -p) 10
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 255085
virtual memory          (kbytes, -v) unlimited

但它不起作用。我尝试与不同的用户同时运行许多进程,并且它们同时停止并出现相同的错误。因此,我认为无论登录的用户如何,整个系统都有一个“限制”。

【问题讨论】:

  • 这是一个令人困惑的问题 首先它不是一个编程问题。其次,您需要更改一些可调内核参数:maxpid、max_nprocs 和 maxuprc。以该顺序。 maxuprc 有效地依赖于 maxpid。第三,你实际上正在做某事,看起来,你应该重新考虑你的方法。为什么?让系统同时运行大量进程几乎总是一个坏主意。
  • ps 实际上是否显示超过 250,000 个进程正在运行?当错误都说你内存不足时,为什么你认为这是一个进程计数问题?

标签: process numbers max solaris ulimit


【解决方案1】:

您的系统看起来虚拟内存不足。在这种情况下,没有必要增加进程数。

增加交换区大小以允许更多进程运行。

确保您有足够的 RAM 来运行所有这些进程,否则性能会受到影响。

【讨论】: