Drupal(6.19)cron在进行搜索索引时会耗尽内存

时间:2011-01-24 08:19:27

标签: php drupal memory-management

我的Drupal 6.19安装已经运行了大约六个月。客户一直在积极使用它发布更多内容。

然而,事情发生了,因为现在cronjob没有完成。

致命错误:第444行的/XXX/modules/search/search.module中允许的内存大小为134217728个字节(尝试分配36230464个字节)

如您所见,我在PHP.ini中有128M内存限制,而search.module正试图分配相当大的数量,36M。因为我无法想出为什么search.module会这样做,我问你们,如果你有任何提示我怎么能继续前进。由于Drupal处于托管环境中,因此无法增加内存限制。

我将索引限制在10个节点,并将最短字长改为5个字符。我无法理解如何索引10个节点无论如何都会占用所有内存。

如何调试?怎么试试?任何想法将不胜感激!

3 个答案:

答案 0 :(得分:0)

好的,所以你说客户端已经发布了更多内容。我们没有关于cronjob以前使用了多少内存的信息。直到最近,你很可能是在你的记忆限制之下,现在你已经过去了。当不知道自己在做什么的人建立网站时,这种事情就会发生。

如何进一步处理?为搜索模块增加内存分配。我的意思是,这似乎有点明显。你担心这不会扩展吗?嗯,你真的不知道,因为你到目前为止还没有描述过这个问题。

要考虑的一件事是搜索引擎是一种在运行搜索时为I / O交换磁盘空间的方法。您可以为每次搜索扫描所有文档(使用I / O),也可以查看索引(在磁盘上)以获取信息。因此,为您的站点编制索引的cron脚本很自然需要一定量的内存(作为一种临时磁盘空间)来完成工作。

答案 1 :(得分:0)

查看/XXX/modules/search/search.module中的第444行,那里的代码是什么?

我认为我们需要了解有关您网站内容的更多信息。网站有多大?多少个节点?每个节点有多少文本,约?

检入您的数据库,您的节点使用多少存储空间?整个数据库的大小是多少?

您是否安装了一个模块,允许您搜索文件系统上的附件和文件(如http://drupal.org/project/search_files)?

答案 2 :(得分:0)

我的第一个怀疑是队列中有一个巨大的节点,它会让你超过极限。有几种方法可以测试:

检查数据库中的search_dataset表,找出与您网站的节点对应的最大sid。然后,查看比nid更大的节点。其中一个异常大,还是怪异的?尝试将其编辑为空白(确保保留旧版本)并查看是否有帮助。

如果不是 - 请发表评论,我们会尝试别的。