Solr 索引花费的时间太长
Posted
技术标签:
【中文标题】Solr 索引花费的时间太长【英文标题】:Solr indexing is taking way too long 【发布时间】:2011-12-06 07:16:18 【问题描述】:我们需要在 Solr 中创建索引,而且耗时太长。我们有大约 800,000 条记录,按照索引的速度,似乎需要 15 到 20 天。我们目前正在寻找一次性索引。有什么建议吗?
【问题讨论】:
如果您使用的是 DIH,请发布您的数据导入配置。 【参考方案1】:为什么索引需要这么多时间?任何需要时间的预处理步骤?因为这似乎需要很长时间。 这些是数据库记录还是丰富的文档? 你如何索引数据?您是否经常进行提交或优化? 系统内存、cpu、空间表现如何? 可能想重新访问solrconfig.xml中的一些设置
如果以上所有情况看起来都不错,您可以尝试一个选项 - 创建单独的核心并运行并行作业来索引数据。索引完成后,您可以合并索引或使用distributed search。
【讨论】:
无预处理步骤。这些是数据库记录。通过 Drupal 管理控制台对它们进行索引。服务器上没有其他事情发生,因为它还没有投入生产。这是具有 4 GB 内存和 200 Gb HD 的四核机器。它也是使用 schema.xml 版本的 Apache Solr:drupal-1.4【参考方案2】:我编写了一个系统来索引大约 300,000 条记录,经过一些性能测试,我将 SOLR 配置为每 5 分钟提交一次。查看 solrconfig.xml。有几个与提交更改相关的指令,但您不应该在每次记录更新后提交。每 100-200 条记录后提交或每 5 分钟提交一次。这在重新索引所有数据时尤其重要。
我选择了 5 分钟,因为它对于持续同步也是一个合理的设置,因为我们每分钟都会轮询数据库以获取更改。我们告诉用户,更改流向 SOLR 需要 5 分钟左右,到目前为止,每个人都对此感到满意。
【讨论】:
【参考方案3】:根据我的经验,索引大量数据可能需要一段时间。我正在处理的索引有 2m 个项目(大小:10G)。使用 DB 完成索引大约需要 40 小时。
有一些因素可能会减慢您的速度:
内存。一种认为是盒子上有内存,另一种是允许Solr使用它。尽可能多地为 Solr 提供索引时间(以后可以轻松更改) 垃圾收集器。使用默认的我们遇到了很多问题(在 20-30 小时后索引被中断,我们不得不从头开始) 从 DB 制作 Solr 缓存结果 检查所有查询,它们的成本是多少 小批量索引。如果我要索引 300k 个项目,这将花费更长的时间,而不是分 3 批 100k 索引它们 存储大量大的全文存储字段无济于事(如果您不需要存储某些内容,请不要这样做)【讨论】:
你能给出你提出的每个建议的配置示例吗? 自从几年前以来,我不再真正从事那个项目了。 1.这是盒子的硬件规格,也许还有一些Java婴儿车。 2.不记得确切的Java设置3.wiki.apache.org/solr/DataImportHandler#CachedSqlEntityProcessor 4.那是SQL,运行解释并分析结果。 5.可以尝试使用wiki.apache.org/solr/…来限制每批涉及的记录数。 6. 三思而后行,将其最小化。试着去掉一些,看看对速度有没有影响。 以防万一它可能对其他人有用。我将批量大小从 -1 增加到 50,速度提高了 4 倍。然后我通过使用 -m 30g 标志将更多 RAM 分配给 solr 实例,速度再次提高了 2 倍 太棒了!是的,Solr/Lucene 喜欢记忆!我认为小批量索引会更频繁地更新,这很有帮助。找到批量大小的好位置是一款不错的游戏以上是关于Solr 索引花费的时间太长的主要内容,如果未能解决你的问题,请参考以下文章