无法分配内存:fork:无法在aw

时间:2017-01-30 06:34:07

标签: php amazon-web-services

我在服务器日志文件中收到此错误。

  

[Sun Jan 29 00:22:43.570300 2017] [mpm_prefork:错误] [pid 1205](12)不能       分配内存:AH00159:fork:无法分叉新进程

     

[Sun Jan 29 00:22:53.742820 2017] [mpm_prefork:错误] [pid 1205](12)不能       分配内存:AH00159:fork:无法分叉新进程

     

[Sun Jan 29 00:23:03.771702 2017] [核心:通知] [pid 1205] AH00051:孩子       pid 22134退出信号中止(6),/ etc / apache2中可能的coredump

     

[Sun Jan 29 00:23:03.876081 2017] [核心:通知] [pid 1205] AH00051:孩子       pid 22135退出信号中止(6),/ etc / apache2中可能的coredump

     

[Sun Jan 29 00:23:04.899489 2017] [mpm_prefork:错误] [pid 1205](12)不能       分配内存:AH00159:fork:无法分叉新进程

     

[Sun Jan 29 00:23:14.931272 2017] [mpm_prefork:错误] [pid 1205](12)不能       分配内存:AH00159:fork:无法分叉新进程

     

[Sun Jan 29 00:23:24.965639 2017] [mpm_prefork:错误] [pid 1205](12)不能       分配内存:AH00159:fork:无法分叉新进程

     

[Sun Jan 29 00:23:35.031174 2017] [mpm_prefork:error] [pid 1205](12)不能       分配内存:AH00159:fork:无法分叉新进程

帮助解决问题。

1 个答案:

答案 0 :(得分:11)

cannot allocate memory错误通常指向内存不足(OOM)错误。

这种情况经常发生在较小的EC2实例上,例如:如果您尚未调整应用程序可以从操作系统请求的最大内存。

您的应用程序(在本例中为Apache)尝试分配一些内存(它希望它能够根据其配置请求它)并且操作系统根本没有足够的内容来提供它。

一些常见的解决方案:

更多内存

升级到更大的EC2实例,只需更多内存。这显然无法解决问题的根本原因,但是 - 如果流量足够低 - 它甚至可能导致它完全停止出现。

如果您的预算允许,这只是一个选项,当然......

添加硬盘支持的内存(交换)

更确切地说:考虑添加swpa

至于如何,下面创建一个4GB交换文件:

sudo dd if=/dev/zero of=/var/swapfile bs=1M count=4096
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile

警告词:交换,如果使用不当,很容易导致恶劣的情况,例如thrashing

明智地使用现有内存

您需要阅读Apache Performance Tuning

希望这有帮助!