【问题标题】:Solr performance for large index with 4 servers具有 4 个服务器的大型索引的 Solr 性能
【发布时间】:2015-04-04 00:55:03
【问题描述】:

我们有 4 台服务器(2 台 48GB RAM、24 核、2.4GHz 的服务器和 2 台 64GB RAM、24 核、2.4GHz 的服务器)。我们使用 4 个分片(每台服务器上 1 个分片)。每个分片索引大小约为 500GB。

我们正在使用 edismax 解析器 && 环绕查询解析器来处理短语、邻近度和通配符搜索。

即使是简单的通配符/邻近搜索也需要 10-20 秒。

我们在具有 8 个分片(每个分片索引大小为 250GB)的单台服务器(24 核,64 GB RAM,2.4GHz)上具有相同的设置

与 4 台服务器设置相比,单台服务器设置的性能几乎是 2 倍(更好)。

我们设置了 4 台服务器 solr cloud 以提高性能,但性能下降了。这里有什么我们可能遗漏的吗?

【问题讨论】:

  • 服务器是虚拟机还是裸机?
  • 它们不是虚拟机。

标签: performance solr multiserver


【解决方案1】:

这个问题看起来像 CPU usage when searching using solr 的姐妹,问题是一样的:你是 CPU 密集型的,因为你的查询非常繁重。您的查询以单线程方式与每个分片匹配,因此您的 4 台机器设置意味着您有 4 个线程处理每个 500GB 的索引,而您的单机设置有 8 个线程处理每个 250GB 的索引。由于您有足够多的 CPU 内核,因此具有较小分片的设置将首先完成。

如果您将分片进一步拆分为例如每个 50GB,您将拥有 40 个分片。如果将它们沿 4 台机器拆分,每台机器有 10 个分片,则可以在全 CPU 速度下支持 2 个(实际上更像是 3 个)并发请求。理想情况下,这将使您的单机设置速度提高 5 倍。

【讨论】:

  • 在同一台机器上拥有更多分片会提高性能吗?我的理解是,当碎片分布在不同的机器上时,碎片是有意义的。在同一台机器上拥有太多分片实际上可能会降低性能,因为现在存在负载平衡开销。
猜你喜欢
  • 1970-01-01
  • 2011-03-27
  • 2017-08-29
  • 2014-09-04
  • 1970-01-01
  • 2013-07-28
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多