Coherence 缓存成员超时并在 Spring Hibernate Tomcat 应用程序中从集群中删除。结果数据不同步,所有缓存成员都不会同时更新。这个应用程序一直在 PROD 中运行,我们最近所做的唯一更改是升级 Tomcat。这是一个生产问题。任何建议都会有所帮助。谢谢。
问问题
311 次
1 回答
1
正如您所说,缓存成员在超时时被删除,或者换句话说,它们停止响应集群的其余部分。
发生这种情况的最可能原因是正在发生停止世界的垃圾收集,因此没有发送将成员保留在集群中的心跳。
在短期内,您需要查看垃圾收集日志(希望您已配置这些日志)并最终分析/调整您的应用程序以确保内存使用和垃圾收集是有效的。
从长远来看,让与集群不完全相关的进程加入集群是一个坏主意,尤其是在它们启用了存储的情况下。您应该使用扩展 TCP 来允许这些其他进程改为访问缓存。
这样做的原因是,以您的情况为例,Tomcat 具有各种资源需求,最终在 JVM 上引入了更广泛的内存/垃圾收集需求,而不仅仅是集群成员。因此,为更广泛的需求调整 JVM 将引入更多妥协,最终使运行内存/GC 优化以保持集群稳定的 JVM 变得更加困难。
于 2013-02-13T12:16:42.660 回答