在Apache / PHP中找到内存泄漏

时间:2013-09-09 21:50:55

标签: php apache memory-leaks

我有一个运行LAMP的网站。星期六,该网站崩溃了。原来我们专用服务器(4.5岁)的硬盘驱动器向南移动。他们更换了驱动器(使用更新的操作系统(Cent 5.x,如果有所不同)),我上传了代码(已经完美工作4年以上)并恢复了数据库(感谢上帝的备份!)。

突然间,该网站会定期减速停止。支持人员报告说,Apache的内存不足并且正在扼杀性能。我可以看到其中一个apache线程垄断了内存(有时超过50%)。

系统有很多来源(太多了,无法在此粘贴)所以我甚至不知道从哪里开始看。

DID 注意到的一件事是我最初在2009年1月设置了服务器。新的硬盘驱动器运行的是PHP 5.3,然后就没有了(我假设我们在5.2,但当然我无法检查任何配置......)。是否有一些我可以检查的资源?

任何帮助表示赞赏。通过移动1个版本的PHP,我对于运行4年以上的应用程序如何突然发生巨大变化感到困惑。

感谢。

1 个答案:

答案 0 :(得分:0)

我想我找到了答案......我认为

经过一番调查,我注意到新上传的文件归< user>所有:psacln。原始文件(从装载的驱动器中复制以获得速度)归root:root(我登录为)所有。

我将其他文件的所有者更改为< user>,但问题并没有消失。然后我将整个目录树更改为< user>:psacln。该网站停止工作(未经授权的访问错误)。网站根目录的兄弟文件夹全部归< user>:psaserv所有。所以我将所有者更改为< user>:psaserv(下面的所有子项仍然由< user>:psacln拥有)并且从那时起就没有问题了。这是2天,当我监视进程时,我注意到偶尔有一个httpd进程(大约有12个)命中1.5%的内存(当我之前遇到问题时,它们通常会达到40%)。

我真的很好奇为什么会这样(所以我知道将来如何避免),但我不愿意花更多的时间在上面,因为它现在只是花花公子。

任何人都有任何想法,为什么和为什么,我很乐意听到它。希望这有助于某人!