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
?
總結
以上是生活随笔為你收集整理的Elasticsearch优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MESI协议
- 下一篇: 面向对象简述--对象、引用、指针