请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

es查询崩溃不可用

老师你好 我有一个模糊的问题要请教您
之前公司上收日志存入es集群中 每天上收量大概在20-40g左右 保存的时间为30天
有一段时间 大数据开发发通告说 让我们尽量不要跨多个日期进行搜索日志 因为es会崩溃 ,崩溃后只能让那边重启,很耗时间
请问一下 发生这种情况的可能性是什么,如何解决,谢谢!

正在回答

1回答

  • 这种实质是一个查询命中的索引过多,即命中的分片过多,导致过多数据载入内存进行计算

  • 尤其当你的查询有聚合类的查询时更严重,这会导致数据节点的 heap 因为短时间载入过多数据而触发严重的 GC

  • GC时间过长又会导致查询延迟变大,节点响应变慢,进而出现读队列拒绝等情况

  • 还可能出现离群现象(因为长GC导致无法即时回应 master 的心跳检查),离群后因为节点实际没有挂又会立刻申请加群,进一步增加了集群的不稳定

  • 最后整个系统雪崩,只能祭出重启大法。

这种的解决方法是做好索引的分片数规划,比如分片大小控制在30~50GB 左右,可以按周或者月来建立索引,将分片分散在尽量多的数据节点。

优化查询语句,缩小查询命中的分片数等等。

再不行就要考虑是不是要换一个数据产品,尤其是聚合类的查询并不是 es 的长项,这种要考虑用 clickhouse / apache doris 这种专业的 olap 产品

0 回复 有任何疑惑可以回复我~
  • 提问者 wzywzy #1
    多谢老师回复!!
    回复 有任何疑惑可以回复我~ 2022-01-05 13:34:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信