调用问题
超时
tcp/ip配置
- 连接超时参数
ConnectTimeout
,让用户配置建连阶段的最长等待时间- 一般很快,5秒内即可,内网甚至 ms 级别
- 读取超时参数
ReadTimeout
,用来控制从 Socket 上读取数据的最长等待时间- 读取超时指的是,向 Socket 写入数据后,我们等到 Socket 返回数据的超时时间,其中包含的时间或者说绝大部分的时间,是服务端处理业务逻辑的时间。
- 读取超时,不会影响服务端的运行
- 读取超时设置过大,会导致大量当前请求积压
- 一般设置30s左右
Feign 的坑
- 默认读取超时是 1s,容易 timeout
- 读取超时和连接超时配置必须同时配置,才会生效
- Feign 和 Ribbon 的超时,以 Feign 为准
Ribbon 的坑
- MaxAutoRetriesNextServer 默认是1,即会自动重试一次,最好设置为 0
http client 使用注意
- 使用某个 http client 之前,看下其支持的并发度是多少,可能默认为2,即使再多的线程和再多的请求也不会提高调用并发