如何减少 ImageManager 或 php 对虚拟内存的使用



我们在一个已移动到运行Cloud Linux的服务器的网站上使用TinyMCE(MoxiCode)的ImageManager的旧版本。

不幸的是,我们的主机并没有通知我们,每个帐户都有1048576 KB的硬虚拟内存限制,这在以前的服务器上是不存在的。

这听起来很多,但ImageManager现在随机生成内部服务器错误500,并且每六个缩略图中只有一个缩略图被成功加载。

在服务器错误日志中,我发现以下消息频繁出现,同样是随机出现在不同文件夹中的不同index.php中,主要在图像管理器/流文件夹中,但也在语言文件夹、js文件夹和rpc文件夹中:

无法分配内存:无法创建子进程:/opt/suphp/sbin/suphp

瞧,如果我刷新当前正在刷新ImageManager的网站的CPanel页面,我可以看到虚拟内存的使用量已达到1048576 KB。(通常情况下,它远低于10%。)

我有点困惑,为什么加载一个主题、一些样式表、一个语言包和六个缩略图需要这么大的内存。

特别是从phpinfo中可以看到,output_braining设置为0,并且在ImageManager代码中的任何位置都不会调用ob_start。

我认为缩略图可能每次都是从头开始创建的,而不是从mcith文件夹加载的,但事实并非如此,正如我从缩略图文件上的日期中看到的那样。

事实上,如果我删除缩略图,事情就会完全挂起(thumbnail.auto_generate设置为true)。

当然,我们可以升级到最新的ImageManager(现在称为MoxiManager),我们在其他网站上也使用过它,并且运行良好,但由于用户界面和会话身份验证发生了重大变化,这将涉及到大量的工作,包括编码和重新培训客户,而客户并不真正想要升级。

如果有人对如何解决这个问题有想法,我们将不胜感激。

您能做的最好的事情是在ImageManager的源代码中的每一行之后使用以下语句,这看起来可能会占用您的内存

error_log("current memory usage: ".memory_get_usage()." on line: ".__LINE__);

一旦你找到了错误的线路,你就可以开始寻找替代

最新更新