LAMP和内存/交换空间问题

时间:2010-10-03 12:47:04

标签: php memory-management memory-leaks imagemagick

我的LAMP应用程序似乎最终耗尽了我所有服务器的内存和交换空间。我的直觉是它与我必须调用的外部进程有关(因为这是问题出现的唯一时间)。

我需要经常调用GhostScript,ImageMagick的“转换”,PDFTK等。当这些进程正在运行时,那就是我看到我的内存耗尽的时候。所以,问题:

  1. 我应该使用哪些技术来确定哪个进程确实会导致内存问题?我现在的计划是单独运行进程,只需通过* nix命令“top”观察内存使用情况。有没有办法以编程方式执行此操作?

  2. 我可以使用“内存刷新”解决方案吗?这是一个好主意吗?

1 个答案:

答案 0 :(得分:0)

您可能面临的另一个问题是,在分叉时,您从中分叉的应用程序会“加倍”,因此其内存消耗会翻倍。如果您有一个驻留的应用服务器并且保留了大量缓存的数据,那么这可能非常重要。

此问题的解决方案是运行侦听套接字或命名管道的小型驻留脚本/程序以启动外部程序。

您可以使用top -b(或类似)接收计算机可读输出,并使用脚本监控其中的内存消耗。

顺便说一句:不要将交换空间计为“真正的”内存,你的应用程序应该运行而不会遇到交换空间。一旦开始点击交换空间,性能下降得如此之快,以至于请求开始堆积,导致使用更多内存,从而导致更多内容被交换。如果您看到分配了重要的交换空间,那么增加内存(或购买更大的托管计划)