“无法分叉”错误消息

Mar*_*cny 8 command-line swap memory

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

当我尝试“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
Run Code Online (Sandbox Code Playgroud)

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

小智 6

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

我将其设置为 350 个进程以防止意外的叉形炸弹。是什么让我发疯——当我的进程不能再分叉时,我当时运行的进程数远远没有达到极限。

原来的原因是,没有计算进程,而是计算内核级线程。

ps -efL | grep ^$USER | wc -l 
Run Code Online (Sandbox Code Playgroud)

确实表明我已经接近极限了。我仅在 Chrome 中打开的许多选项卡/窗口就可以达到 100 多个这样的线程 - 难怪我很容易达到这个限制。


Mar*_*cny 2

问题最终变成了这个:

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

Fuser 进程由 cron 作业分叉无法控制地启动