OkHttpClient连接数量限制?
答
您可以尝试通过在OkHttpClient.Builder
上设置ConnectionPool来配置空闲网络连接的最大数量。
int maxConnections = 5;
int keepAliveDuration = 15000;
ConnectionPool cp = new ConnectionPool(maxConnections, keepAliveDuration, TimeUnit.MILLISECONDS);
new OkHttpClient.Builder()
.connectionPool(cp)
.build();
答
连接数是可配置的Dispatcher,而不是在连接池,只允许配置最大空闲连接和保持活动的功能。
调度程序允许配置主机的连接数和最大连接数,每个主机默认值为5,总数为64。对于HTTP/1,这看起来很低,但如果使用HTTP/2则可以,因为可以将多个请求发送到一个连接。
要配置调度,请按照下列步骤操作:
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(100);
dispatcher.setMaxRequestsPerHost(10);
OkHttpClient client = new OkHttpClient.Builder()
.dispatcher(dispatcher)
.build();
第一个参数是maxIdleConnections。如果keepAlive过期,只有idleConnections会被清除。如果达到max live连接,则无法阻止任何请求。 –