我们的 apache ignite 2.7.0(由 docker 部署)多次出现 OOM 异常。
我发现了这个日志消息:
消息队列限制设置为 0,当在 FULL ASYNC 或 PRIMARY_SYNC 模式下运行缓存操作时,由于发送方和接收方的消息队列增长,可能会导致潜在的 OOME。
我在 https://apacheignite.readme.io/docs/clients-vs-servers#section-managing-slow-clients 找到了关于此的消息.
所以,我想重现 OOM 异常,然后修改配置以确保我以正确的方式修复 OOM。 但我无法重现 OOM 异常,那么如何重现它?
另一个问题是:默认过期时间是多少?
因为我没有在 https://apacheignite.readme.io/docs/expiry-policies 处获得默认过期时间.
任何帮助者将不胜感激。
以下是我当前的配置:
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="name"/>
<property name="atomicityMode" value="ATOMIC"/>
<property name="cacheMode" value="REPLICATED"/>
</bean>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="session"/>
<property name="atomicityMode" value="ATOMIC"/>
<property name="cacheMode" value="REPLICATED"/>
</bean>
</list>
</property>
<property name="peerClassLoadingEnabled" value="true"/>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>10.130.221.31</value>
<value>10.130.223.32:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
最佳答案
请记住,日志消息实际上显示:
Message queue limit is set to 0 which may lead to potential OOMEs
突出显示我的^
这表明集群中的节点具有用于节点间通信的队列。它们曾经是绑定(bind)的,但现在设置为 0,表示无限制。因此,如果一个节点速度缓慢,其他向其发送消息的节点最终可能会无限制备份这些消息,这可能会导致 OOME。
您可以通过调用 TcpCommunicationSPI.setMessageQueueLimit()
在代码中设置它或
<property name="messageQueueLimit" value="1024"/>
在 TcpCommunicationSpi bean .
关于java - 如何修复 apache ignite 2.7.0 的 OOM 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59353920/