springcloud个人问题总结

Eureka常见问题

  1. Eureka注册服务慢:默认情况下,服务注册到Eureka Service的过程较慢,服务注册设计到的周期心跳默认是30秒一次(通过客户端配置的serviceUrl)。只有当实例,服务端和客户端的本地缓存中的元数据都相同时,服务才能被其他客户端发现(所以需要3次心跳)。可以使用参数eureka.instance.leaseRenwalIntervalInSeconds修改间隔时间,从而加快客户端连接到其他服务的过程。在生产环境中最好坚持使用默认值,因为服务器内部有一些算法,它们会对续约做出假设
  2. 已停止的微服务节点注销慢或者不注销:在开发环境中,往往希望Eurrka Service能迅速有效的注销已停止的微服务实例。然而,由于Eureka Service清理无效节点周期长(默认90秒),以及自我保护模式等原因,可能会遇到微服务注销慢甚至不注销的问题,解决方案如下:
  • Eureka Service端,配置关闭自我保护,并且按需配置Eureka Service清理无效节点的时间间隔

      eureka.server.enable-self-preservation:false

     #设为false,关闭自我保护,从而保证会注销微服务

    eurrka.server.eviction-interval-time-in-ms

    #清理间隔(单位毫秒,默认是60*1000)

  • Eureka Client端,配置开启健康检查,并按需配置续约更新时间和到期时间

eureka.client.healthcheck.enabled

#设为true,开启健康检查(需要spring-boot-starter-actuator依赖)

eureka.instance.lease-renewal-insterval-in-seconds

#续约更新时间间隔(默认30秒)

eureka.instance.lease-expriation-duration-in-seconds

#续约到期时间(默认90秒)

注意:这些配置仅建议在开发和测试是使用,生产环境建议坚持使用默认值

Hystrix/Feign整合Hystrix后首次请求失败

某些场景下,Feign或者Ribbon整合Hystrix后,会出现首次调用失败的问题。Hystrix默认的超时时间是1秒,如果一秒内得不到响应,就会进入到fallback逻辑。由于spring的懒加载机制,首次请求往往会比较慢,因此在某些机器(特别是配置比较低的机器)上,首次请求需要的时间可能就会大于1秒

解决方案

  • 方法一,延长Hystrix的超时时间
  • hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds:5000
  • 禁用Hystrix的超时
  • hystrix.command.default.execution.timeout.enabled:false
  • 对于feign,还可为Feign禁用Hystrix
  • fegin.hystrix.enabled:false

 

​​​​​​​

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值