1

我在 Solr 安装(3core 服务器)上遇到了一些性能问题。我正在根据某些关键字对实时 Twitter 数据进行索引,正如您可以想象的那样,文档的接收率非常高,因此对核心的更新非常高且定期。下面给出的是我的三个核心的文档大小。

Twitter  - 26874747
Core2    -  3027800
Core3    -  6074253

我的服务器配置有 8GB RAM,但现在我们正在经历服务器性能下降。可以做些什么来改善这一点?另外,我有几个问题。

提交次数是否占用高内存?减少每小时的提交次数会有帮助吗?我的大多数查询都是基于字段或日期分面的?如何改善这些?

问候, 罗希特

4

3 回答 3

3
  • 由于您有大量的提交,您可能希望有一个更大的合并因子来提高索引性能。
  • 分批索引文档,而不是一个一个的。
  • 发生合并时需要非常高的内存/cpu,索引也会在那时被阻塞。
  • 将索引服务器与查询服务器分开以获得更好的性能,使用主从配置。
于 2011-07-17T00:57:41.357 回答
0

自从我们最初的设置以来,我们也经历了 Solr 的性能下降,我发现最好的事情是: http ://www.lucidimagination.com/blog/2010/01/21/the-seven-deadly-sins- of-solr/

这应该可以让您直接对 Solr 实现进行一些改进。到目前为止,我的发现表明:

  • 使用 SolrJ 通过二进制更新获得更好的性能(它将文档添加到索引但不需要提交......我们不得不放弃 PHP 并将后端移至 Java)
  • 从每次提交中删除优化过程,并根据您拥有的数据量每天/每周仅运行一次(默认情况下,它设置为在 php-solr-client 库上的每次提交上运行)。
  • 将您的预热查询调整到您最常访问的数据。
  • 提交大量数据。
  • 监控 JVM 和垃圾收集器
  • 调整 Tomcat/Java 设置
于 2011-07-27T22:15:53.393 回答
0

升级到 SOLR 4.0 的最新主干。然后,按照此处的说明进行操作:http ://wiki.apache.org/solr/NearRealtimeSearch

解决方案的关键是在导入推文时使用软提交。

我们正在使用与您所描述的类似的系统,并且每小时索引大约 500.000 条推文,没有任何障碍。

这里的部分问题是你不能在这个环境中设置太多的缓存,因为你需要在某一时刻提交。发生这种情况时,缓存消失了,并且自动预热开始了。确保查看您的自动预热设置。当您进行构面查询时,还要检查您的日志,以了解任何构面中唯一值的数量不是太高的迹象。我们仍在为拥有 600 万唯一用户的旋转查询而苦苦挣扎。这会扼杀你的表现。在实践中,这意味着我们在 5000 万条推文上做得很好,超过这个速度会显着减慢,我们正在等待一些 4.0 改进来解决这个问题。

于 2012-02-14T23:17:10.910 回答