V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jimmyismagic
V2EX  ›  程序员

Spring Cloud Consul 注册丢失

  •  
  •   jimmyismagic · 2021-07-16 16:19:54 +08:00 · 1837 次点击
    这是一个创建于 1212 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目采用 consul 作为注册中心, 服务跑了一段时间后,某些服务就从注册中心消失,无法被其他服务访问,但服务本身还是正常的,内部直接 /actuator/health 返回的也是 UP

    消失基本都是在服务接收到大量外部连接的时候。

    该怎么排查这个问题,目前没有日志看到服务注册断开。

    11 条回复    2021-07-20 21:50:00 +08:00
    tms
        1
    tms  
       2021-07-16 16:48:31 +08:00
    看 consul 的健康检查日志
    fkdog
        2
    fkdog  
       2021-07-16 16:50:15 +08:00
    info 里没记录那就临时切到 debug 级别看 warning 和 debug 信息.
    th00000
        3
    th00000  
       2021-07-16 17:25:37 +08:00
    线上跑了好久了 没出过你这个问题, Consul 如果健康检查通过应该不会出现摘掉服务的情况
    你访问 health check api 没问题的时间不代表 Consul 访问的时候没问题
    服务流量大的时候 health check api 可能来不及响应
    你应当先查服务的监控, 看当时 CPU 占用是怎样的, JVM 是怎样的, GC 有没有问题, 有没有 STW 时间过长, 超过了 health check 的 timeout
    xuanbg
        4
    xuanbg  
       2021-07-17 07:35:56 +08:00
    应该是你的健康检查某些时候没有响应造成的。我遇到过的是邮件服务的健康检查超时造成服务间歇性下线,后来在配置里面把邮件的健康检查 disable 就好了。
    jimmyismagic
        5
    jimmyismagic  
    OP
       2021-07-19 09:16:17 +08:00
    @xuanbg http 连接过多,没有响应后面就再也连不上了吗?
    @th00000 会有来不及响应的时候,遇到大流量长连接,后面就再也连不上了,会是什么原因呢?
    @tms 没找到日志,可能配置不对
    @fkdog 业务端日志吗?
    th00000
        6
    th00000  
       2021-07-19 10:30:44 +08:00
    @jimmyismagic #5 关于 Consul health check 超时后的重连接, 建议你阅读以下官方文档, 应该都有写
    关于 4 楼的 disable health check 的做法, 在线上环境是万万不可的
    tms
        7
    tms  
       2021-07-19 18:55:22 +08:00
    @jimmyismagic consul 端临时切换到 debug 的 log 级别才能看到 health check 日志。不过根据你说的,估计是代码逻辑造成的问题了,按理来说 health check api 不应该因为其他业务逻辑时间长来不及响应。
    jimmyismagic
        8
    jimmyismagic  
    OP
       2021-07-19 19:17:11 +08:00
    @tms 已知的问题就是连接过多,一旦过多,就会注册丢失,但是问题是,丢失之后就不会有其他连接进来,负载也变小,但就是无法注册上
    NCE
        9
    NCE  
       2021-07-19 19:18:56 +08:00
    看下调用方是否有超时熔断策略。

    我猜测你的服务没有做压力测试就上线了。
    leeyuzhe
        10
    leeyuzhe  
       2021-07-20 13:26:24 +08:00
    检查下是不是有这个配置项 health-check-critical-timeout: 60s
    tms
        11
    tms  
       2021-07-20 21:50:00 +08:00
    @jimmyismagic 首先确认服务是否有主动重新注册,再看 consul 是否拒绝了注册。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1545 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:01 · PVG 08:01 · LAX 16:01 · JFK 19:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.