突然我的服务器内存不足了。 我试图通过使用“df -k”命令来检查磁盘空间,但它看起来很好。 所以跟踪很多东西后,我发现httpd服务暂挂删除的文件在临时内存,这是不能通过“df -k”来检查要检查最后删除的文件,仍与服务,我用“sudo lsof | grep已删除”这命令。
httpd 58324 58501 apache 8ur REG 253,0 0 279075355 /tmp/.ZendSem.SpCcXd(删除)
这是一个Magento应用程序在centos7(linux)服务器上用apache 2.4.6后花了一些时间我发现停止apache并运行“sudo lsof | grep deleted”这个命令我没有得到任何这样的问题。 只要我启动Apache并检查“sudo lsof | grep deleted”命令,这再次显示像附加的截图。
我遇到了不同平台上的不同应用程序的这个问题。 这是一个常见的编码问题,使用文件的代码在完成时不会closures文件。 代码应该总是closures文件,当它完成了它的工作。
保护临时文件的一个常见方法是打开文件,删除它然后使用它。 这可能是在这里做的。 但是,该文件一直存在,直到它被closures。
解决方法是限制Apachesubprocessclosures之前要处理的请求数。 孩子退出时,文件将被closures。 将MaxRequestsPerChild设置为100到1000之间的某个位置可能会缓解该问题。 默认值是10000。