文章目录
- 一丶问题
- 二丶原因
- 三、解决方案
一丶问题
我个人的需求及业务场景描述起来比较麻烦,参考价值不高,不多赘述。
问题就是本地发送请求数量分别达到5个,64个的时候,后续的请求全部超时失败。
二丶原因
经过公司各位大佬的协助,最后定位问题:
在okhttp3中,Dispatcher对象定义了两个变量:
maxRequest=64
maxRequestPerHost=5
看到这里懂的都懂~~
这里去简单查了一下
maxRequestPerHost是对单个IP+端口的限制
maxRequest这个就是所有总数的最大上限
(个人理解~~建议自行百度)
三、解决方案
同样也是发现问题的开发大佬,给我解决了这个问题,致谢!
方案:创建一个自己的Dispatcher对象,不使用默认的Dispatcher,这样就可以自己设定maxRequestPerHost和maxRequest的上限值。
static Dispatcher dispatcher = new Dispatcher();static {//自定义上限dispatcher.setMaxRequests(3000000);//自定义上限dispatcher.setMaxRequestsPerHost(1000000);}static OkHttpClient client = new OkHttpClient.Builder().dispatcher(dispatcher).build();
我的okhttp3版本:
<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>3.14.9</version>
</dependency>
我很菜,希望不要误导你的思路。
转发请附带原文链接~~