调用问题

超时

  1. 依赖服务的默认超时是否满足需求
  2. 网络不稳定,必定引起超时,可能需要进行重试

    重试

  3. 超时可能需要重试,依赖服务的接口是否满足幂等性

    并发

  4. 依赖服务的并发数量


tcp/ip配置

  • 连接超时参数 ConnectTimeout,让用户配置建连阶段的最长等待时间
    • 一般很快,5秒内即可,内网甚至 ms 级别
  • 读取超时参数 ReadTimeout,用来控制从 Socket 上读取数据的最长等待时间
    • 读取超时指的是,向 Socket 写入数据后,我们等到 Socket 返回数据的超时时间,其中包含的时间或者说绝大部分的时间,是服务端处理业务逻辑的时间。
    • 读取超时,不会影响服务端的运行
    • 读取超时设置过大,会导致大量当前请求积压
    • 一般设置30s左右

Feign 的坑

  1. 默认读取超时是 1s,容易 timeout
  2. 读取超时和连接超时配置必须同时配置,才会生效
  3. Feign 和 Ribbon 的超时,以 Feign 为准

Ribbon 的坑

  1. MaxAutoRetriesNextServer 默认是1,即会自动重试一次,最好设置为 0

http client 使用注意

  • 使用某个 http client 之前,看下其支持的并发度是多少,可能默认为2,即使再多的线程和再多的请求也不会提高调用并发