现象:一台mac服务器,大约40来天就会出现服务器连接不上的问题,最后只能到机房强制重启。
分析:
sh-3.2# launchctl limit maxproc
maxproc 10666 16000
sh-3.2# ulimit -Su
10666
sh-3.2#
当前进程数限制10666,但如果只从active monitor上看,只有3471个进程。为什么新建终端无法打开


问题所在,应用产生了很多僵尸进程,但在macos的top里面看不到zombie的信息,一直没往这个方向想。

- 原理解释 :在 Unix 系统(包括 macOS)中,一个子进程结束后,如果它的父进程没有调用
wait()或waitpid()来回收它的退出状态,这个子进程就会变成 僵尸进程(Defunct / Zombie)。 - 瓶颈卡点 :僵尸进程虽然不占用 CPU 或物理内存,但它们依然牢牢占用了系统的 PID(进程号)和进程表条目。