ElasticStack 7.X 问题记录:

访问elasticsearch或者kibanan的时候出现:
[<transport_request>] would be [1029097478/981.4mb], which is larger than the limit of [986932838/941.2mb], real usage: [1029097216/981.4mb], new bytes reserved: [262/262b], usages [request=0/0b, fielddata=254327/248.3kb, in_flight_requests=262/262b, accounting=17622140/16.8mb], with { bytes_wanted=1029097478 & bytes_limit=986932838 & durability=\"PERMANENT\" }"}

Elasticserach运行过程中出现如上日志的时候,问题的根本原因是由于JVM的内存不足导致的。
官方解释如下:


这意味着Elasticsearch阻止了某些请求的执行,以避免发生内存不足错误,请参阅断路器文档 。从摘要中可以看出,这是与监视群集进行对话时的情况。
:fearful:


1、解决办法:

调整JVM的内存分配,编辑JVM.options文件,重启集群全部节点。

内存设置原则:
– 设置Xmx和Xms你的物理内存不超过50%。Elasticsearch出于JVM堆以外的目的而需要内存,因此为此留出空间很重要。
– 单个es实例内存分配不要超过32G。设置Xmx并且Xms不超过JVM用于压缩对象指针(压缩oop)的阈值;确切的阈值有所不同,但接近32 GB。
– Elasticsearch可用的堆越多,它可用于其内部缓存的内存就越多,但它留给操作系统用于文件系统缓存的内存就越少。同样,较大的堆可能导致较长的垃圾回收暂停。

参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/7.6/heap-size.html

2、解决办法2:

增加indices.breaker.total.use_real_memory : false到elasticsearch.yml文件中,重启集群。

此方法的原理是:
indices.breaker.total.use_real_memory
Static setting determining whether the parent breaker should take real memory usage into account (true) or only consider the amount that is reserved by child circuit breakers (false). Defaults to true.
indices.breaker.total.limit
Starting limit for overall parent breaker, defaults to 70% of JVM heap if indices.breaker.total.use_real_memory is false. If indices.breaker.total.use_real_memory is true, defaults to 95% of the JVM heap.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 × 2 =