关于Linux控制系统最大进程数和线程数的参数解读

本文解析了Linux系统中控制最大进程数与线程数的三个关键内核参数:threads-max、pid_max及RLIMIT_NPROC,阐述了它们的含义、计算方式与配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制Linux能够打开的最大进程数和最大系统线程数,有以下几个内核参数:

 

1> threads-max (/proc/sys/kernel/threads-max)

这个值表示物理内存决定的系统线程数上限。

可通过计算得出: max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);

涉及几个因子:

A、物理内存页数量

B、每个线程栈大小,即ulimit -s显示数据

C、每的页大小

 

说明:一般根据物理内存和线程栈大小可决定此参数的值。当调整线程栈大小时,此参数会有影响。

举例:# cat /proc/sys/kernel/threads-max
127440

 

2> pid_max (/proc/sys/kernel/pid_max)

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

举例:# cat /proc/sys/kernel/pid_max
32768

说明:此参数一般不需要调整,因为一般开启的进程数量不会如此之大。

 

3> RLIMIT_NPROC (ulimit -u 或者 getrlimit)

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

举例:# ulimit -u
63720

配置方式:

A、/etc/security/limits.conf

* soft nofile 655350
* hard nofile 655350

B、/etc/security/limits.d/90-nproc.conf

*          soft    nproc     unlimited
root       soft    nproc     unlimited

说明:A和B配置中取较小值。

 

【小结】

需要调整参数如下:

1> ulimit -s 此参数不建议配置过大,一般1024K=1M即可

2> ulimit -u 此参数为threads-max一半即可。threads-max的值一般是固定的。

检查方式:可以启动一个进程后,查看进程相关限制数,如:cat /proc/<pid>/limits

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值