为何Hazelcast日志中重复出现Retrying the connection!!提示?
咱们先拆解下你贴出的日志内容:
hazelcast.web.ClusteredSessionService : Retrying the connection!!
2018-05-06 13:25:19,328 INFO c.h.i.DefaultAddressPicker [LOCAL] [dev] [3.6] 已选择Address[127.0.0.1]:5703,使用套接字ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5703],允许绑定任意本地地址为true
2018-05-06 13:25:29.333 INFO 9947 --- [.ensureInstance] c.hazelcast.web.ClusteredSessionService : Retrying the connection!!
这些重复日志本质是Hazelcast的**分布式会话服务(ClusteredSessionService)**在提示:它没法稳定连接到Hazelcast集群,正在周期性重试连接。常见原因有这几个:
集群节点匹配失败/连接中断
ClusteredSessionService负责管理Web应用的分布式会话,必须和Hazelcast集群建立连接才能正常工作。如果它找不到配置中指定的集群节点(比如集群地址配置错误),或者已建立的连接中途断开,就会每隔一段时间触发一次重试,也就出现了你看到的重复日志。日志里显示Hazelcast绑定了127.0.0.1:5703,可能是本地单节点集群,但也有可能你配置的集群地址和实际运行的节点不匹配,导致服务连不上目标集群。服务启动顺序颠倒
如果你的Web应用比Hazelcast实例先启动,Web应用里的ClusteredSessionService启动时,Hazelcast还没完成初始化、无法接受连接,它就会不断重试,直到Hazelcast准备就绪。这种情况一般等Hazelcast启动完成后,重试几次就会自动停止。网络或端口占用问题
日志里用到的5703端口如果被其他进程占用,或者防火墙/安全组限制了该端口的通信,会导致Hazelcast节点之间、或者Web服务与Hazelcast之间的连接不稳定,断开后就会触发重试机制。
给你几个实用的排查方向:
- 调整启动顺序,确保Hazelcast实例先启动完成,再启动依赖它的Web应用。
- 核对Hazelcast的配置文件(比如
hazelcast.xml或Spring Boot的application.properties),检查集群地址配置(TCP-IP节点列表、多播设置)是否和实际运行的节点一致。 - 检查端口占用情况:Windows用
netstat -ano | findstr 5703,Linux/macOS用lsof -i :5703,如果端口被占用,可杀掉占用进程或修改Hazelcast的端口配置。 - 查看Hazelcast实例本身的日志,找一找有没有更详细的连接失败错误(比如超时、连接拒绝),能帮你精准定位问题。
内容的提问来源于stack exchange,提问作者ismael

