标签:val connectionPool ConnectionPool OKhttpClient build new 优化 连接池
刚开始使用的是这种方式连接请求:
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
标签:val,connectionPool,ConnectionPool,OKhttpClient,build,new,优化,连接池 来源: https://www.cnblogs.com/30go/p/14932924.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。