es首次查询缓慢

Elasticsearch | 作者 kepmoving | 发布于2017年04月17日 | 阅读数:5291

目前是单节点状态,索引数大概100个,每个索引由一个分片,分片的文档数不一致,最大要10g,最小就几兆,首次查询的时候都是查询的全部,查的100个索引的数据,首次查询要4秒样子,第二次查询就会降到100毫秒左右,有大神指点一下怎么优化吗?能把第一次的查询性能也提高,整个索引大小大概100g样子
已邀请:

kennywu76 - wood@Ctrip

赞同来自:

因为你只有一个结点,那么每次查询要hit 100个索引。 即使你每个索引一个分片,也要hit 100个shard。 每个shard可能有几个到几十个segment ,这意味着你第一次查询,在没有文件系统缓存的情况下,会产生非常多的随机磁盘IO,慢就是正常的了。 第二次查询快,是因为利用到了os page cache,文件系统缓存帮忙省掉了随机磁盘IO,自然就很快了。
 
如果不能提升硬件(采用更多的结点·、使用ssd、磁盘阵列etc),那么就只能尽量控制segment file的数量。 比如增大refresh和flush周期。 在没有写入的时候,定期将所有索引force merge成1个segment。

lyfb - 80后大数据开发

赞同来自:

升级SSD硬盘,效率会有提升

fhyes123 - ES小白

赞同来自:

对数据使用预加载,能提高第一次查询的效率

要回复问题请先登录注册