绊脚石乃是进身之阶。

单次查询时间几十ms,并发数提高的情况下,查询速度如何提升

Elasticsearch | 作者 wudingmei1024 | 发布于2018年11月30日 | 阅读数:7355

集群状态:3个EsMaster安装在三台机器节点上。
                 另外两台机器:分片安装了5个EsNode,每个实例内存均为25G,机器内存256G
                 ES 6.1.3版本
 
目前将数据存储在HBASE,将rowkey信息存储在ES中
 
查询单个索引,4亿条数据,30shard,单次查询时间在几十ms内
 
并发3000时速度能稳定在1s内
 
并发6000时查询速度2-3S,查询的过程中堆内存使用率正常
 
对于这种高并发的查询场景有没有优化的空间和思路,还有如何判断查询是否已经到达瓶颈状态
已邀请:

kennywu76 - Wood

赞同来自: printf_uck juin

如果是追求极致的搜索响应速度和搜索并发量, 不应该做单机上的多实例部署,单个ES实例足够利用所有的硬件资源了。 你只有两台机器用作数据结点,所以初步有以下建议:
1. 没台机器只安装一个ES node
2. 适当减少索引的分片数量,4亿数据,30个shard有些多了,搜索合并阶段的负载可能过重,减少到10个shard甚至4个shard,对比测试一下。
 
判断是否达到瓶颈,首先要监控search线程池的活动状况,queue是否一直很高,reject是否很高。 然后配合jvm gc情况,系统基础指标,cpu , io使用情况,判断瓶颈在那里。

liubin

赞同来自:

单次查询单字段么。几十ms,数据结构复杂么。为何我1.6亿的数据。5台机器,10个数据节点,3个master节点,垮字段查询基本在100到700ms 之间。

要回复问题请先登录注册