ElasticSearch 查询时内存溢出导致Eurake客户端不停重启

偏执的太偏执、 2022-06-08 10:44 308阅读 0赞

一天晚上,生产环境升级,升级的主要内容是将用户服务折分出去,并用户数据从mongo中复制到ES中助力查询。在测试环境和预发环境都测试通过, 然后在生产环境, 一次后台查询导致整个系统崩溃。

后来查找到原来是很早以前的一段代码,将所有用户都查询出来然后进行分析,导致用户服务直接挂掉,ES不能正常服务(对外服务断断续续),所有服务连接ES都是断断续续的,导致使用ES的服务(Eurake客户端)不停的重启, 状态从UP或DOWN之间不停的更换(Saw local status change event StatusChangeEvent [timestamp=1506004119798, current=DOWN, previous=UP]),致使整系统不能正常提供服务。

事件过程:
在测试环境查询用户列表超1W行以后的数据时,ES报错: Result window is too large, from + size must be less than or equal to: [10000] but was [10020]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter
这是因为ES提示结果窗口太大了,目前最大值为10000,而我们却请求查找到10020行。并提示我们使用scroll api这种更有效率的方式进行查询。或者修改index.max_result_window,但是ES不建议这样做,因为会消耗更多内存(从这次经历来看,也会导致ES不能提供正常的服务)。
由于没有时间去研究scroll api,所以我们修改了index.max_result_window,由于测试环境数据量相对生产环境来说算小的,所以测试环境抗下来了,而生产环境就直接挂了。

关于这次升级故障后对系统进行优化的方案,以后再发表吧。
另外提一下,scroll api是ES推荐的用于深度分页的方式.

发表评论

表情:
评论列表 (有 0 条评论,308人围观)

还没有评论,来说两句吧...

相关阅读

    相关 elasticsearch过程

    在es的维护中少不了要重启节点,毕竟重启可以解决80%的问题,那么你知道怎么正确的重启es节点么? es版本 6.5.4 1、禁用分片分配 执行下面的配置,就可以禁用分片

    相关 电脑不停,电脑不停

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 以电脑WIN 7为例,不停重启的原因是: 1、如果电脑自动重启,有一半的可能电源出问题了,电压不稳定,