【问题标题】:Cannot allocate memory: fork: Unable to fork new process : server apache, how found source and fix it?无法分配内存:fork:无法创建新进程:服务器 apache,如何找到源并修复它?
【发布时间】:2014-11-25 17:37:42
【问题描述】:
我的 apache 服务器的 error.log 中有这个错误:
[error] (12)Cannot allocate memory: fork: Unable to fork new process
我不知道从哪里开始找到问题!?
如何知道启动了多少个fork进程?
如何知道每个fork进程中运行的是什么脚本?
如何知道每个 fork 进程的内存消耗?
寻找解决方案的其他想法?
此错误经常发生。我重新启动服务器并解决了问题,但它很快又回来了,所以我需要找到更好的解决方案。
【问题讨论】:
标签:
apache
memory
process
fork
【解决方案1】:
在我的情况下,我的 apache 日志太大,磁盘上没有足够的空间......
必须考虑归档日志!
【解决方案2】:
我有同样的问题来解决它,有 2 个选项:
1- 从微型实例转移到小型实例,这是解决问题的改变(亚马逊上的微型实例往往有大量 CPU 窃取时间)
2- 调整 mysql 数据库服务器配置和我的 apache 配置以使用更少的内存。
3- 有人认为它是由交换文件空间不足引起的。没有它,即使系统有足够的空闲 RAM,系统也必须拒绝分叉操作
针对低内存情况的调整指南,例如:http://www.narga.net/optimizing-apachephpmysql-low-memory-server/(但不要使用 MyISAM 表的建议 - 太可怕了......)
这两个选项将大大减少问题的发生。我仍在寻找更好的解决方案来关闭已完成的进程并杀死那些挂在那里的进程。
【解决方案3】:
错误:登录 VPS 时出现“无法分叉:无法分配内存”,
当您的 VPS 耗尽资源(尤其是 RAM)时,您通常会收到该错误。
此时您可以做的是重新启动 VPS 以降低 RAM 使用率以暂时登录。