Elasticsearch优化

 2.out of memory错误

因为默认情况下es对字段数据缓存(Field Data Cache)大小是无限制的,查询时会把字段值放到内存,特别是facet查询,对内存要求非常高,它会把结果都放在内存,然后进行排序等操作,一直使用内存,直到内存用完,当内存不够用时就有可能出现out of memory错误。

解决方法:

(1)设置es的缓存类型为Soft Reference,它的主要特点是据有较强的引用功能。只有当内存不够的时候,才进行回收这类内存,因此在内存足够的时候,它们通常不被回收。另外,这些引 用对象还能保证在Java抛出OutOfMemory 异常之前,被设置为null。它可以用于实现一些常用图片的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory。在es的配置文件加上index.cache.field.type: soft即可。

(2)设置es最大缓存数据条数和缓存失效时间,通过设置index.cache.field.max_size: 50000来把缓存field的最大值设置为50000,设置index.cache.field.expire: 10m把过期时间设置成10分钟。


剩余磁盘空间达到es最小值,添加数据被block

PUT _all/_settings 
{"index.blocks.read_only_allow_delete": null}

解除每次search最大10000size的限制 
PUT [xxx]/_settings 

"max_result_window" : 20000 

删除单个index全部内容 

DELETE /new_listings_investment 
{ "query": { "match_all": {} } }  

 

https://blog.csdn.net/newbornzhao/article/details/79162274

 

posted @ 2018-09-06 19:51  沧海一滴  阅读(366)  评论(0编辑  收藏  举报