“无法分叉”错误消息

“无法分叉”错误消息

终端上的许多不同程序都会发生这种情况。通常伴随着一些关于无法分配内存的错误消息。

当我尝试“free -m”时,输出如下:

martin@martin-ThinkPad-T410:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          3823       3079        744          0         99       1159
-/+ buffers/cache:       1820       2003
Swap:         3953         60       3893

为什么我的交换使用率这么低?这有关系吗?

答案1

您必须设置最大进程数的限制/etc/security/limits.conf或者 Ubuntu 中可能设置了一些默认设置。

我将其设置为 350 个进程,以防止意外出现 fork 炸弹。让我抓狂的是 - 当我的进程无法再 fork 时,我当时运行的进程数远远超出了限制。

事实证明,原因在于,没有计算进程,而是计算内核级线程。

ps -efL | grep ^$USER | wc -l 

确实显示我已经接近极限。仅我在 Chromium 中打开的选项卡/窗口数量就可能超过 100 个这样的线程 - 难怪我很容易就达到了这个极限。

答案2

问题最终是这样的:

https://bugs.launchpad.net/ubuntu/+source/php5/+bug/877894

由 cron 作业启动的 fuser 进程不受控制地分叉

相关内容