2016-04-07 123 views
0

我们在CPU上有8个内核,并且我们正在修复一个非常低效的查询。基本上,当我们达到CPU的1/8时,Solr就会崩溃。在Solr上使用多个处理器

我们应该得到固定的查询,这将解决我们眼前的问题,但是即使使用高效的查询,当我们同时结束数以千计的用户时会发生什么?我们如何让Solr使用CPU上的所有处理能力?

该查询涉及到2-3个方面。如果我们将facet.threads设置为2或3,那么它会使用更多的CPU?

非常感谢您的帮助。

回答

0

每个Solr请求都由其自己的线程处理,并且对于该请求一直是(几乎)单线程的。面临的例外,你可以增加线程的数量。

当发出多个并发请求时,它们将分别在自己的线程中运行;使用您的8 CPU核心机器,这意味着8个并发请求将运行全部8个CPU核心。

+0

谢谢@Toke。缩短查询只有部分帮助。当我们刷新一个列表页面时,需要3秒钟的时间。当我们在3秒内创建10个列表页面时,该网站就会崩溃。我们的开发人员正在捕鱼,但我认为他们的问题太低。他们声称让它在他们的开发机器上工作,但它不能在现场工作。因此,他们不能在Solr或调用solr的ecomm应用程序(它们位于dev中的同一台机器上,不同的服务器在线)上设置正确的配置。任何想法,或配置示例来设置?非常感激。 – Dan

+0

顺便说一下,ecomm应用程序是hybris。我简直不敢相信我们应该有10个并发查询,即使它们有点大吗? – Dan

+0

很难回答关于查询性能的问题,而不知道查询是什么。一些常见的罪魁祸首是分组,高基数faceting和rows =数百万,但我建议您尝试IRC频道(freenode上的#solr),因为它经常需要大量的交互来查明这些问题。 当然你也可以试试邮件列表或在这里发布你的查询问题。如果您这样做,请尝试包含包含完整查询和响应时间的日志行。还简要描述文档数量和字节中的硬件和索引大小。 –