我正在设置一个包含3个节点和3个分片的Solr Cloud部署。如果没有复制,我的数据导入处理程序会在约5分钟内非常快速地导入大约1.2M文档。这很好,但是当我启用复制时,即重新创建复制因子为2的集合时,数据导入处理程序变得非常慢,对于相同的1.2M文档大约需要1小时30分钟。
我在3个4x16虚拟服务器上以云模式使用solr 5.3.1,每个节点上都有一个zookeeper实例。数据导入来自MS SQL DB。
我的大部分配置都是Solr附带的默认配置,我尝试将硬提交和软提交的自动提交更改为很长但没有效果。
任何想法/指示都会非常感激。
谢谢, Ewen的
答案 0 :(得分:0)
也许不是一个正确的答案,但问题似乎解决了。当然,我们必须做一些事情来实现这一点,但是我们所能想到的就是删除log4j属性文件中的CONSOLE日志记录并删除它创建的11GB日志文件。
猜猜这可能至少可以为其他人提供其他东西来尝试谁有同样的问题。
答案 1 :(得分:0)
当您将文档发送到集合时,它首先被代理到该文档的领导者分片,然后领导者分片在本地应用它,然后将其发送到所有活动副本,然后返回到客户端。 这意味着发送文件'请求保持打开状态,直到所有副本都收到文档或失败。这意味着插入文档的时间是任何副本插入文档的最长时间。
所以,假设有一定数量的索引器连接,具有更高复制因子的集合将更慢地插入文档。
关于日志记录,Solr默认使用同步日志记录,因此如果您将日志写入非常慢的磁盘或nfs或其他东西,那肯定会影响查询时间。我强烈建议对所有内容进行异步日志记录,但这意味着要使用默认的Solr设置。