文档首页/ MapReduce服务 MRS/ 组件操作指南(安卡拉区域)/ 使用Elasticsearch/ Elasticsearch常见问题/ Elasticsearch运行过程中出现某EsNode实例堆内存溢出
更新时间:2024-11-29 GMT+08:00

Elasticsearch运行过程中出现某EsNode实例堆内存溢出

问题背景与现象

某节点的EsNode1无法访问,通过该实例执行写入和查询操作均失败。

原因分析

  1. 分析该实例日志发现,报堆内存OutOfMemoryError,通过dump堆内存分析发现超过70个线程的string数组长度达到99840以上,每个线程占用285MB以上内存,进一步分析数据内容,都是一次bulk导入的数据,总共占用19GB以上,缓存这些数据内存使用率就达到79%,大量任务并发提交,导致实例内存溢出。
  2. 与ISV确认,每次bulk提交50000条数据,Elasticsearch每个bulk命令的最佳导入性能为5MB~15MB,根据ISV每条数据2KB左右,推荐ISV修改bulk数据条数为2000条。

解决方法

重启EsNode1实例,ISV整改业务侧的批量bulk导入数据条数为2000条,减少导入过程中的内存消耗,解决进程OOM问题。