Apache 无法分叉:无法分配内存

Apache 无法分叉:无法分配内存

我在 Fedora 上运行,apache使用mod_perl.服务器分叉一个进程来频繁发送电子邮件 - 然后分叉退出。

突然,我得到了:Cannot fork: Cannot allocate memory。有足够的可用内存(我没有仔细观察,但可用内存比使用的内存多),apache运行的进程没有太多 - 10?,CPU 使用率低,接近 0。重新启动服务器 httpd 优雅地解决了问题。

什么会导致这样的事情呢?我是否可能进入某种状态,其中问题是在系统中分配了太多进程 - 并且负载下降后无法恢复?

不幸的是,我没有太多信息,因为我很恐慌并试图启动该站点而不是运行诊断。 :-) 所以我的问题非常笼统:当分配太多进程时,是否有任何不明显的东西会产生这种行为?有什么特定于从 apache 内部 fork 的事情吗? ETC

谢谢你!

答案1

听起来您已达到资源限制。查看 pam_limits.so 和/etc/security/limits.conf.这些允许管理员对用户可以使用的资源设置明确的限制,以便一个用户不能独占所有系统资源。如果 Apache 达到了由此指定的限制,即使有大量其他用户可以使用的资源,它也会返回如上所述的错误。大多数 shell 中也有limitorulimit命令,但我不认为这是问题所在。

相关内容