我的Drupal 6.19安装已经运行了大约六个月。客户一直在积极使用它发布更多内容。
然而,事情发生了,因为现在cronjob没有完成。
致命错误:第444行的/XXX/modules/search/search.module中允许的内存大小为134217728个字节(尝试分配36230464个字节)
如您所见,我在PHP.ini中有128M内存限制,而search.module正试图分配相当大的数量,36M。因为我无法想出为什么search.module会这样做,我问你们,如果你有任何提示我怎么能继续前进。由于Drupal处于托管环境中,因此无法增加内存限制。
我将索引限制在10个节点,并将最短字长改为5个字符。我无法理解如何索引10个节点无论如何都会占用所有内存。
如何调试?怎么试试?任何想法将不胜感激!
答案 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
更大的节点。其中一个异常大,还是怪异的?尝试将其编辑为空白(确保保留旧版本)并查看是否有帮助。
如果不是 - 请发表评论,我们会尝试别的。