我们有一个2节点集群的JBoss环境,在生产中运行良好。间歇性地,我们面临一个问题,即2个缓存停止了相互通信(我们没有看到任何与infinispan相关的日志,但我们注意到应用程序日志的结论是缓存已经停止了相互通信)。为了解决这个问题,我们暂时关闭1个节点。然后我们在几个小时后将另一个节点启动,它又开始正常工作。有时它不正常,所以我们让它再关闭一段时间,然后在下一次提起它时,它就能正常工作。非常随机的行为。 在我们看来,这像是一个间歇性的网络故障。所以我们需要让网络团队参与进来。但我不明白我应该告诉他们什么。我的问题是:需要检查哪些配置,如何检查这些配置才能验证缓存是否能够相互通信。 我在standalone.xml中的缓存相关设置是。
<property name="ehcache.multicast.address" value="x.x.x.21"/>
<subsystem xmlns="urn:jboss:domain:jgroups:1.1" default-stack="udp">
<stack name="udp">
<transport type="UDP" socket-binding="jgroups-udp"/>
<protocol type="PING"/>
<protocol type="MERGE3"/>
<protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/>
<protocol type="FD"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="pbcast.NAKACK"/>
<protocol type="UNICAST2"/>
<protocol type="pbcast.STABLE"/>
<protocol type="pbcast.GMS"/>
<protocol type="UFC"/>
<protocol type="MFC"/>
<protocol type="FRAG2"/>
<protocol type="RSVP"/>
</stack>
<stack name="tcp">
<transport type="TCP" socket-binding="jgroups-tcp"/>
<protocol type="MPING" socket-binding="jgroups-mping"/>
<protocol type="MERGE2"/>
<protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/>
<protocol type="FD"/>
<protocol type="VERIFY_SUSPECT"/>
<protocol type="pbcast.NAKACK"/>
<protocol type="UNICAST2"/>
<protocol type="pbcast.STABLE"/>
<protocol type="pbcast.GMS"/>
<protocol type="UFC"/>
<protocol type="MFC"/>
<protocol type="FRAG2"/>
<protocol type="RSVP"/>
</stack>
</subsystem>
<socket-binding name="jgroups-mping" port="0" multicast-address="x.x.x.23" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" port="7600"/>
<socket-binding name="jgroups-tcp-fd" port="57600"/>
<socket-binding name="jgroups-udp" port="55200" multicast-address="x.x.x.24" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" port="54200"/>
<socket-binding name="messaging" port="5445"/>
<socket-binding name="messaging-group" port="0" multicast-address="x.x.x.22" multicast-port="${jboss.messaging.group.port:9876}"/>
<socket-binding name="messaging-throughput" port="5455"/>
<socket-binding name="modcluster" port="0" multicast-address="y.y.y.105" multicast-port="23364"/>```
如果需要更多信息来说明问题,请告诉我。谢谢。
2020年5月8日更新。启用了org.infinispan和org.jgroups的DEBUG日志。在日志中发现了这一行。07:17:13,928 FINE [STABLE] (OOB-20,shared=udp) my-host-52ejb: received digest from my-host-51ejb (digest=my-host-51ejb: [4 (4)])与我自己的摘要不匹配(my-host-52ejb: [0 (0)]):忽略digest并重新初始化自己的digest.这是否有任何意义与问题有关?我可以看到所有缓存都有这个类似的日志:hibernateejbsingleton。
在没有日志的情况下,很难理解发生了什么。显然,将org.jgroups降低到DEBUG可能会产生过多的日志,但它会提供一些基本信息。