Chinaunix

标题: linux有没有最大的进程号限制? [打印本页]

作者: zw2002    时间: 2006-08-17 09:53
标题: linux有没有最大的进程号限制?
如果一台防火墙,总也不重起,进程pid总在增加,会不会出错啊?
作者: jyxz5    时间: 2006-08-17 10:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: bigapple2008    时间: 2006-08-17 11:38
记得早期的kernel最多是1024个进程,用户能起1023个,还有一个是恢复用的。
不过pid不一定和进程数一样递增吧,
作者: connet    时间: 2006-08-17 12:15
pid 增加到 65535 会反复使用, 难道你会 64k 个程序一起跑?
作者: Bayweb    时间: 2006-08-17 12:27
原帖由 connet 于 2006-8-17 12:15 发表
pid 增加到 65535 会反复使用, 难道你会 64k 个程序一起跑?

>>
>>
>>他是在说一种极端的情况下,例如服务器不正常状态下,或者被恶意使用的情况下
>>
>>
作者: jyxz5    时间: 2006-08-17 17:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: sharkhuang    时间: 2006-08-19 16:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: safedead    时间: 2006-08-20 08:41
标题: 和内核的进程管理有关
在2.4.20内核
pid的上限是32768
某些BUG程序当pid超过32000后会变僵尸
到2.6内核
进程表上限好像是1G

在2.4内核编服务器程序要考虑进程表溢出问题, 短时间大量创建销毁线程,
会让pid在2分钟内窜升到32000以上, 这时系统会假死几秒, 直到进程表被刷新
到2.6内核基本上不会碰上这个问题
作者: connet    时间: 2006-08-21 08:48
2.6 上也是  32767
执行 while (true) do ls &>/dev/null; done;
在另一终端 ps -e 看。
作者: zmyspring    时间: 2006-08-21 10:01
我觉得上面各位老兄的回答似乎都不是很完整。
进程号是有最大的,如果你同时跑大量的进程(由于系统不同,该数值也会不同),理论上事会出现溢出的,但是我们往往不会同时运行大量的进程,所以系统设计的上限制绝大多数情况下是不会溢出的。

但是我们虽然不会同时运行大量程序,但是我们有可能在一个月或者几个月的时间里运行了大量的程序,这些程用时可能都比较短,这时候进程的pid就很可能已经达到了这个上限值,这时候系统会回收利用那些已经用过的,现在没有在使用的闲置的数值较小的pid。利用这个机制,linux系统可以运行甚至几年的时间都不需要关机。那些服务器就是那样的
作者: czk19790827    时间: 2006-08-21 10:05
/proc/sys/kernel/pid_max
              This  file  (new in Linux 2.5) specifies the value at which PIDs
              wrap around (i.e., the value in this file is  one  greater  than
              the  maximum  PID).   The  default  value  for this file, 32768,
              results in the same range of PIDs as  on  earlier  kernels.   On
              32-bit  platfroms,  32768  is the maximum value for pid_max.  On
              64-bit systems, pid_max can be set  to  any  value  up  to  2^22
              (PID_MAX_LIMIT, approximately 4 million).
作者: jyxz5    时间: 2006-08-21 10:16
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2