OKhttpClient 连接池优化

刚开始使用的是这种方式连接请求:

for(int i = 0;i<= 100000000;i++){ 
    val request = Web3j.build(new HttpService(address)).ethGetBlockByNumber(defaultBlockParameter, true)
}

跟踪源码发现HttpService中使用的是Okhttp的连接池,Build的初始化代码如下:

也就是说,在每次创建一个新的httpService时,都创建一个数据库连接池,导致服务端的连接被撑爆了。

 

 

 

 

经过优化后使用如下方式,将复用ConnectionPool:

val connectionPool:ConnectionPool = new ConnectionPool(1500,5L, TimeUnit.MINUTES)
for(int i = 0;i<= 100000000;i++){     
val httpService = new HttpService(address,getHttpClient(connectionPool),false) val request = Web3j.build(httpService).ethGetBlockByNumber(defaultBlockParameter, true)

    //业务代码

}

//复用连接池
private def getHttpClient(pool:ConnectionPool):OkHttpClient = {
new OkHttpClient().newBuilder().connectionPool(pool).build()
}

 

参考:https://www.cnblogs.com/greyzeng/p/14148675.html

posted @ 2021-06-25 23:18  硅谷工具人  阅读(3129)  评论(0)    收藏  举报
成功之道,在于每个人生阶段都要有不同的目标,并且通过努力实现自己的目标,毕竟人生不过百年! 所有奋斗的意义在于为个人目标实现和提升家庭幸福,同时能推进社会进步和国家目标! 正如古人讲的正心诚意格物致知,修身齐家治国平天下。