在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
提示: 作者被禁止或删除 内容自动屏蔽