无法分配内存:fork:无法分叉新进程?

时间:2015-02-25 09:36:44

标签: apache amazon-web-services memory-leaks out-of-memory

我们在aws进行托管。最近,在将我们的博客从wordpress移至aws后,我们遇到了明显的服务器响应时间延迟。主要是在访问博客时。以下是error_log文件中的日志

[Wed Feb 25 06:10:10 2015] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 25 06:12:22 2015] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 25 06:12:36 2015] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 25 06:12:50 2015] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 25 06:13:35 2015] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 25 06:27:14 2015] [error] (12)Cannot allocate memory: fork: Unable to fork new process

我们在php.ini文件中将内存大小从256增加到512 MB。但是,问题仍然存在。

我们还将KeepAlive更改为On。它仍然没有解决。任何建议/解决方案都会有很大的帮助。

3 个答案:

答案 0 :(得分:8)

我在使用jenkins,mysql&amp ;;托管Java应用程序时遇到了这个问题。在vm of AWS上的ubuntu上的tomcat。

我用来解决重新启动虚拟机的问题的第一步。

默认情况下,AWS不会在硬盘上提供交换内存,因此您最好亲自动手。如何做到这一点你可以找到here。需要提一下:交换区域的解决方案(不知道为什么)对我不起作用,我不得不创建一个交换文件。

祝你好运!

答案 1 :(得分:3)

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

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

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

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

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

答案 2 :(得分:0)

将Apache的prefork MPM更改为httpd.conf 这些是我最终使用的值:

StartServers 1

MinSpareServers 1

MaxSpareServers 5

ServerLimit 16

MaxClients 16

MaxRequestsPerChild 0

ListenBacklog 100

然后,尝试用一些php去激活一些模块 sudo a2dismod name_of_module