zoukankan      html  css  js  c++  java
  • 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

    作者:尤灯塔
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    &与&&的区别
    x^y=(x&~y)|(~x&y)证明
    a、b交换与比较
    x+y = ((x&y)<<1) + (x^y) 证明
    (x&y) + ((x^y)>>1)即x和y的算数平均值
    默认参数提升
    类型转换
    闲扯原码,补码和反码(转)
    C/C++中float和double的存储结构
    led设备驱动(s3c_led.c)
  • 原文地址:https://www.cnblogs.com/30go/p/14932924.html
Copyright © 2011-2022 走看看