在客户端使用Ribbon进行负载聚恒时,第一次调用服务会出现超时的情况,这个因为第一次调用的耗时包含了RibbonClient的初始化创建时间,所以时间会比较长容易出现超时。
方案1:增加Ribbon的超时时间。
# 请求超时时间
ribbon.ReadTimout = 60000
# 连接超时时间
ribbon.ConnectTimeout = 60000
# 同一个实例最大重试次数,不含首次
ribbon.MaxAutoRetries = 0
# 其他实例最大重试次数,不含首次(如果只有一个实例,GET超时会对单个服务调用两遍,有重复调用问题)
ribbon.MaxAutoRetriesNextServer = 1
# 是否所有操作都重试
ribbon.OkToRetryOnAllOperations: false
方案2:官方解决配置,饥饿模式,提前初始化客户端连接。
ribbon.eager-load.enabled = true
ribbon.eager-load.clients = 服务名称,多个用逗号分隔