无法分配内存:fork:无法分叉新进程:服务器apache,如何找到源代码并修复它?

时间:2014-09-30 23:30:58

标签: apache memory process fork

我的apache服务器的error.log中出现此错误:

[error] (12)Cannot allocate memory: fork: Unable to fork new process

我不知道从哪里开始发现问题!?

如何知道有多少fork进程启动?

如何知道每个fork进程中运行的脚本是什么?

如何知道每个fork进程的内存开销?

寻找解决方案的其他想法?

此错误会定期发生。我重新启动服务器并且问题已得到修复,但不久之后又回来了,所以我需要找到更好的解决方案。

3 个答案:

答案 0 :(得分:1)

我有同样的问题要解决它有两个选项:

1-从微型实例移动到小型,这是解决问题的变化(亚马逊的微型实例往往有大量的CPU窃取时间)

2-调整mysql数据库服务器配置和我的apache配置以使用更少的内存。

由交换文件空间不足引起的一些sugest。没有它,系统必须拒绝fork操作,即使它有足够的可用RAM

针对内存不足情况的调整指南,例如:http://www.narga.net/optimizing-apachephpmysql-low-memory-server/(但不要使用MyISAM表的建议 - 可怕......)

这2个选项会使问题发生得少得多..我仍在寻找更好的解决方案来关闭已完成的过程并杀死那些挂在那里的过程。

答案 1 :(得分:0)

在我的情况下,这是我的apache日志太大而且没有空间在磁盘上是免费的...

必须考虑归档日志!

答案 2 :(得分:-1)

错误:"无法分叉:无法分配内存"登录到VPS时,

当您的VPS资源耗尽,尤其是RAM时,您通常会收到该错误。

此时你可以做的是重新启动VPS以降低RAM使用率以暂时登录。