采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师你好 我有一个模糊的问题要请教您 之前公司上收日志存入es集群中 每天上收量大概在20-40g左右 保存的时间为30天 有一段时间 大数据开发发通告说 让我们尽量不要跨多个日期进行搜索日志 因为es会崩溃 ,崩溃后只能让那边重启,很耗时间 请问一下 发生这种情况的可能性是什么,如何解决,谢谢!
这种实质是一个查询命中的索引过多,即命中的分片过多,导致过多数据载入内存进行计算
尤其当你的查询有聚合类的查询时更严重,这会导致数据节点的 heap 因为短时间载入过多数据而触发严重的 GC
GC时间过长又会导致查询延迟变大,节点响应变慢,进而出现读队列拒绝等情况
还可能出现离群现象(因为长GC导致无法即时回应 master 的心跳检查),离群后因为节点实际没有挂又会立刻申请加群,进一步增加了集群的不稳定
最后整个系统雪崩,只能祭出重启大法。
这种的解决方法是做好索引的分片数规划,比如分片大小控制在30~50GB 左右,可以按周或者月来建立索引,将分片分散在尽量多的数据节点。
优化查询语句,缩小查询命中的分片数等等。
再不行就要考虑是不是要换一个数据产品,尤其是聚合类的查询并不是 es 的长项,这种要考虑用 clickhouse / apache doris 这种专业的 olap 产品
多谢老师回复!!
登录后可查看更多问答,登录/注册
有了Elastic Stack,不用写一行代码,你也可以玩转大数据分析!
1.4k 14
1.3k 13
921 11
1.2k 11
2.5k 8