频道栏目
首页 > 资讯 > 其他综合 > 正文

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

17-09-25        来源:[db:作者]  
收藏   我要投稿

一天晚上,生产环境升级,升级的主要内容是将用户服务折分出去,并用户数据从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推荐的用于深度分页的方式.

相关TAG标签
上一篇:Java EE 开发教程
下一篇:PandoraBox路由器获取IPv6地址教程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站