安全降低PID_MAX

我在群集中有一台服务器遇到进程表泄漏。 因为负责代码的开发人员几天都不可用,所以我在机器上增加了pid_max,如下所示:

echo 4194303 > /proc/sys/kernel/pid_max 

这给我们带来了时间,直到开发人员能够修复他的应用程序并停止泄漏。

但是,现在我想将服务器与群集中的其他人重新联机。 我担心的是,在300万的范围内有一些过程。 如果我将pid_max降低到正常值,表中已经出现pids会发生什么情况? 系统是否需要重新启动?

什么都不会发生

希望我可以说,服务器会爆炸或至less着火,但不…

随着PID回收,它们将落入定义的范围。 你应该重新启动,并使新的设置在sysctl.conf中保持不变。 但是除了填充/现场问题之外,可能没有更多的PID可用。

为了减lesspid_max你需要确保你的系统运行进程less于pid_max

 ps -efL # L in ps list the threads, thread in linux has a pid as normal process 

我在我的Linux工作站中使用了这个:

 ps -efL | wc -l 307 sysctl -a | grep pid_max kernel.pid_max = 32768 sysctl kernel.pid_max=2000 kernel.pid_max = 2000 sysctl -a | grep pid_max kernel.pid_max = 2000 echo $((2000-307)) 1693 ## there is pids available for new "procs|threads" ## after pid_max reduce