elasticsearch ElasticSearch 30.5GB堆大小限制,elasticsearch,lucene,elasticsearch,Lucene" /> elasticsearch ElasticSearch 30.5GB堆大小限制,elasticsearch,lucene,elasticsearch,Lucene" />

elasticsearch ElasticSearch 30.5GB堆大小限制

elasticsearch ElasticSearch 30.5GB堆大小限制,elasticsearch,lucene,elasticsearch,Lucene,我们使用ES存储大约2.5TB的数据。我们有12个主碎片和2个副本碎片。 我们目前正在对ES进行负载测试,我阅读了以下文章 这篇文章陈述了两件重要的事情。首先将50%的内存分配给Lucene,其次不要超过堆空间的30.5GB限制 我不清楚30.5GB的限制。我知道,如果我将40GB设置为30.5GB,我将失去比我获得更多的内存(因为压缩指针),但如果我有大约250GB RAM的硬件,那么我应该只为堆分配30.5GB而不是120GB的原因是什么。在将70-80GB堆设置为30.5GB堆之后,我不

我们使用ES存储大约2.5TB的数据。我们有12个主碎片和2个副本碎片。 我们目前正在对ES进行负载测试,我阅读了以下文章

这篇文章陈述了两件重要的事情。首先将50%的内存分配给Lucene,其次不要超过堆空间的30.5GB限制


我不清楚30.5GB的限制。我知道,如果我将40GB设置为30.5GB,我将失去比我获得更多的内存(因为压缩指针),但如果我有大约250GB RAM的硬件,那么我应该只为堆分配30.5GB而不是120GB的原因是什么。在将70-80GB堆设置为30.5GB堆之后,我不会开始看到收益吗。有人能列出所有原因吗?

如果您的节点需要运行垃圾收集(Java)来清除堆内存(默认情况下,当堆的75%被使用时会触发旧GC),清除和检查75%*120GB=90GB肯定比检查和清除75%*30.5GB=22.87GB需要更多的时间。当旧GC运行时,节点被冻结,没有线程在做任何事情。因此,从外部看,节点不在那里。使用Elasticsearch,如果一个节点在1.5分钟内无法ping,则认为该节点已退出集群。如果发生这种情况,您将看到大量的网络活动(移动碎片)和显著的性能下降。在您链接的文章中,他们建议将50%的内存留给Lucene,但这只是因为他们谈论的是一台具有64GB RAM的机器。如果你有一个120GB的beast,30.5GB的限制仍然适用于ES,但是Lucene可以自由承担超过50%(即60GB),也就是说,
Lucene会很高兴地吞下剩下的任何东西。
Yep。问题只集中在堆空间上。Andrei GC运行是不将集群堆增加到80GB左右的唯一原因吗?还有其他因素吗?除了“丢失”(或者更好地说是内存管理效率不高)一些内存之外,GC运行时间太长我认为这是唯一的原因。如果您的节点需要运行垃圾收集(Java)来清除堆内存(默认情况下,使用75%的堆时会触发旧GC),清除和检查75%*120GB=90GB肯定比检查和清除75%*30.5GB=22.87GB需要更多的时间。当旧GC运行时,节点被冻结,没有线程在做任何事情。因此,从外部看,节点不在那里。使用Elasticsearch,如果一个节点在1.5分钟内无法ping,则认为该节点已退出集群。如果发生这种情况,您将看到大量的网络活动(移动碎片)和显著的性能下降。在您链接的文章中,他们建议将50%的内存留给Lucene,但这只是因为他们谈论的是一台具有64GB RAM的机器。如果你有一个120GB的beast,30.5GB的限制仍然适用于ES,但是Lucene可以自由承担超过50%(即60GB),也就是说,
Lucene会很高兴地吞下剩下的任何东西。
Yep。问题只集中在堆空间上。Andrei GC运行是不将集群堆增加到80GB左右的唯一原因吗?还有其他因素吗?除了你“丢失”(或者更好地说是内存管理不高效)一些内存,GC运行太长,我认为这是唯一的原因。