最近生产环境elasticsearch老是宕机,主要用于搜索帖子。
分析了了es内存泄漏后的堆栈文件,发现netty中申请了1G内存,对es不是很了解,初步猜测是单个文档太大了,在返回搜索结果的时候,压垮了es。
这几个对象都有一个500Mbyte ,这个byte就是要返回的对象吧?
我想的解决方法就是,减少单个文档大小
最近生产环境elasticsearch老是宕机,主要用于搜索帖子。
分析了了es内存泄漏后的堆栈文件,发现netty中申请了1G内存,对es不是很了解,初步猜测是单个文档太大了,在返回搜索结果的时候,压垮了es。
这几个对象都有一个500Mbyte ,这个byte就是要返回的对象吧?
我想的解决方法就是,减少单个文档大小
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
ES的分词会占用非常多的内存,所以通常需要优化JVM内存分配,可以参考ES的guide: https://www.elastic.co/guide/...
另外,本身文档也需要优化。比如ES默认对所有字段全部分词,实际这是没必要的,你需要定制mapping优化ES的资源占用。默认好像对于超过255字符的文档也不会分词吧?好久没用过ES了记不太清了,以前用ES的时候通读过elasticsearch权威指南这本官方读物的,有提到过。