Solr似乎在提交时阻止更新请求

Solr似乎在提交时阻止更新请求,solr,timeout,Solr,Timeout,我们正在使用Solr 3.6运行主从设置,使用以下自动提交选项: maxDocs:500000 最大时间:60万 我们的索引中约有500万个文档,约占550GB。我们在AmazonEC2XLarge实例(4个虚拟内核和15GB)上同时运行主服务器和从服务器。我们没有特别高的写入吞吐量—大约每分钟100个新文档 我们使用Jetty作为一个容器,它分配了6GB的容量 问题是,一旦开始提交,我们所有的更新请求都会超时(我们不会对这个框执行查询)。提交本身似乎需要大约20-25分钟,在此期间,我们无法向

我们正在使用Solr 3.6运行主从设置,使用以下自动提交选项:

maxDocs:500000

最大时间:60万

我们的索引中约有500万个文档,约占550GB。我们在AmazonEC2XLarge实例(4个虚拟内核和15GB)上同时运行主服务器和从服务器。我们没有特别高的写入吞吐量—大约每分钟100个新文档

我们使用Jetty作为一个容器,它分配了6GB的容量

问题是,一旦开始提交,我们所有的更新请求都会超时(我们不会对这个框执行查询)。提交本身似乎需要大约20-25分钟,在此期间,我们无法向Solr添加任何新文档

以下问题中的一个答案建议使用2个内核,并在其完全更新后交换它们。然而,这似乎有点过头了

关于Solr为什么会阻止请求,我还有什么需要注意的吗?我乐观地希望在配置中有一个我忽略的“DontBlockUpdateRequestsWhenCommission”标志


非常感谢,

根据悬赏原因和问题中提到的问题,这里是Solr的解决方案:

Solr有一个称为SolrCloud的功能,从Solr的
4.x
版本开始。与以前的主/从体系结构不同的是,有引线和副本。领导者负责为文档编制索引并回答查询。系统由动物园管理员管理。如果引线下降,则会选择其一个副本作为新引线


总而言之,如果您想将索引过程自动划分为SolrCloud合适的部分,因为每个碎片都有一个领导者,他们负责为他们的碎片文档编制索引。当您将查询发送到系统中时,会有一些Solr节点(当然,如果Solr节点的数量超过碎片数),它们不负责索引,但随时准备回答查询。当您添加更多副本时,您将获得更快的查询结果(但在索引时会导致更多的入站网络流量等)。

对于那些面临类似问题的人,我的问题的原因是文档中的字段太多,我使用了自动字段*\t,并且字段数量增长非常快,当这个数字达到一定的时候,它只会占用solr的时间,而提交将花费永远的时间

其次,我做了一些分析,结果大部分时间都被string.intern()函数调用占用,文档中的字段数似乎很重要,当这个数字增加时,string.intern()似乎变慢了


solr4源代码似乎不再使用字符串.intern()。但是大量的字段仍然很容易破坏性能。

您使用哪个版本的Solr?