springBoot整合redis启动报错:java.util.concurrent.RejectedExecutionException: event executor terminated

背景

redis一主两从三哨兵部署模式搭建完成后,需要整合springCloud项目,替换掉之前的redis单机模式,更改nacos配置中心中的redis配置之后,重启相关服务发现服务报错一直起不来。(ps:服务docker容器化部署的)

具体错误

在这里插入图片描述

问题分析

报错翻译过来就是:
拒绝的执行异常:事件执行器已终止,很明显是redisClient客户端服务出了问题,查了很多帖子都没有找到解决方案。听说可能是由于内存溢出的错误导致 eventloop 的状态为终止,我猜测应该是新的redis服务出了问题,就再次仔细查看启动日志,发现了另一个错误。具体如截图:
在这里插入图片描述
看到这个报错我似乎猜到了问题。这要说明一下,我的redis服务部署的是一主二从的模式,且是在一台服务器上,所以就只能开启三个不同的端口来启动三个Redis服务,主服务6479,从服务6480,6481端口,有可能是从服务的网络策略问题,在安装的时候我好想只开放了6479端口。

解决方法

开放从节点的服务端口,让外部服务可以访问到:
1.先开启防火墙:
systemctl start firewalld

2.开放指定端口的:
firewall-cmd --zone=public --add-port=6481/tcp --permanent

3…重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

再次重启服务发现启动不在报错了,有时候真的不能揪着一个问题不放,多看看有无更明显的报错,很明显我这里遇到的 event executor terminated 报错是由 哨兵模式的redis服务不可用引起的。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐