日期:2014-05-16  浏览次数:20745 次

Linux系统进程数上限

?

实际的系统进程数上限收到3个配置项的影响:

1、threads-max

这个值表示物理内存决定的系统进程数上限,fork_init中有:

max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8

?

2、pid_max

这个值表示进程ID的上限。为了兼容旧版,默认为32768(即两个字节)。

?

3、RLIMIT_NPROC

这个值表示单个用户允许的最大进程数上限。系统默认为threads-max的一半:

init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;

init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;

?

?

实验:

某环境上:

threads-max = 139264;

pid_max = 32768

RLIMIT_NPROC = 69632

1、此时,使用根用户不断创建进程,最终创建了约32378,考虑到原有的进程数,比较接近pid_max这个值;

2、改pid_max为18000时,最终创建了17612个进程;

3、修改pid_max为80000,换成普通用户,最终创建了67913个进程


?

感谢:

http://blog.csdn.net/tianyue168/archive/2009/09/11/4539742.aspx

?