沧州网站建设运营公司,高端网站建设1,中建建设银行网站,软件合集大全背景
对于搜索集群而言#xff0c;小节点多节点化一般是最佳实践。对于OLAP/日志集群而言#xff0c;难以避免使用大节点#xff08;单节点高配置#xff09;#xff0c;因为太多节点容易造成master的压力。对于OLAP集群而言单节点可能存在数百甚至数千shard。此时我们就…背景
对于搜索集群而言小节点多节点化一般是最佳实践。对于OLAP/日志集群而言难以避免使用大节点单节点高配置因为太多节点容易造成master的压力。对于OLAP集群而言单节点可能存在数百甚至数千shard。此时我们就需要考虑一个问题当我们增大shard数量想利用ES的并发能力提高性能的时候是否可以达到预期
注不考虑增加配置/节点带来的性能收益 结论
1.单个请求一次检索单个索引在一个节点上命中的分片数只能有5个默认如果大于5此时就需要串行了。
Search API | Elasticsearch Guide [7.17] | Elastic 2.不考虑增加配置/节点带来的性能收益增加分片并不一定会性能提升 - 考虑单节点的并发限制 - 聚合场景下GC的压力相对较大多个分片可能会带来更多的YGC压力导致CPU上升并且抵消分布式带来的性能提升 - 聚合是使用 search 线程池 - 单个分片聚合不会并发执行可知大分片对性能并不友好 分析
1. 如何理解max_concurrent_shard_requests
例如test索引有12分片1副本分布在2个节点上此时每个节点都有test索引的12个分片
查询时由于max_concurrent_shard_requests限制了为5也就是超过5就需要等待在一个节点中需要串行2次等待第一次查询5个分片第二次查询5个分片第三次查询2个分片。串行带来性能损失。
如何解决
1. 增加节点数横向扩容
2. 调整单请求的max_concurrent_shard_requests配置
GET test/_search?max_concurrent_shard_requests24
{}
3. 对整个集群调整max_concurrent_shard_requests参数
PUT /_cluster/settings
{persistent : {max_concurrent_shard_requests : 24}
}
2. 聚合性能如何提升
对于聚合来说当max_concurrent_shard_requests合理之后提升性能只能依赖足够的配置。
1. 增大内存防止GC导致损失性能
2. 增多节点数利用分布式能力