NUMBEROF_RETRIES_NEXTSERVER_EXCEEDED:超过重试服务器数量
NUMBEROF_RETRIES_EXCEEDED:超过重试数量
先说一下场景:eureka注册中心一直开着不重启,频繁迭代子服务,运用重试机制,参数不管怎么配置,久了之后就会出现这个错误。
大家都知道,用eureka做注册中心,当服务死掉或者因为网络故障导致服务不可用时,eureka不会马上剔除掉这个服务,而是将它保留等待修复,这样就会带来一些问题,当服务本身在被剔除掉的期间本身发生变化,再重启之后就会引起一些问题。所以,个人认为,eureka的这套机制虽然保护了服务,但是健康检查其实很脆弱,推荐还是使用consul。
原因:是ribbon的MaxAutoRetriesNextServer数量超过了我们总的服务器数量-1。
我的配置信息:
# 在同一个服务器上的最大重试数 (不包括第一次重试)
ribbon.MaxAutoRetries=1
# 最大重试服务器数量(不包括第一台服务器)
ribbon.MaxAutoRetriesNextServer=2
我只起了一台服务器,所以出错了。另外,如果服务注册中心用的是Eureka,此时最好把它重启一下。