64GB RAM服务器,24核,2.4GHz)。我们使用 4 个分片(每台服务器上 1 个分片)。每个分片索引大小约为 500GB。
我们使用 edismax 解析器和 surround query parser 来处理短语、邻近和通配符搜索。
即使是简单的通配符/邻近搜索也需要 10-20 秒。
我们在具有 8 个分片(每个分片索引大小为 250GB)的单台服务器(24 个内核、64 GB RAM、2.4GHz)上具有相同的设置
与 4 台服务器设置相比,单服务器设置的性能几乎是 2 倍(更好)。
我们已经设置了4台服务器solr云来提高性能,但性能下降了。我们在这里可能缺少什么吗?
使用 solr 进行搜索时,这个问题看起来像是 CPU 使用率的姐妹,问题是一样的:由于查询非常繁重,因此您受到 CPU 限制。您的查询以单线程方式与每个分片匹配,因此您的 4 台计算机设置意味着您有 4 个线程分别处理 500GB 的索引,而您的单机设置有 8 个线程分别处理 250GB 的索引。由于您有足够的 CPU 内核,因此具有较小分片的设置将首先完成。
如果您进一步拆分分片,例如每个分片 50GB,您将拥有 40 个分片。如果将它们拆分为 4 台机器,每台机器有 10 个分片,则可以以全 CPU 速度支持 2 个(实际上更像是 3 个)并发请求。理想情况下,这应该为您提供单机设置速度的 5 倍。