博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
httpclient3.1的relaseConnection的misunderstand
阅读量:4214 次
发布时间:2019-05-26

本文共 1225 字,大约阅读时间需要 4 分钟。

releaseConnection是close connection,基于连接池的认识,我们首先会想到是释放链接,至于是否close就不得而知了。近日发现线上系统出现了close wait的socket,close wait是由于被动关闭的一方没有执行socket.close()导致,由此可见我们code中存在没有正确关闭socket。
类似的code是这样的
HttpClient httpClient = newHttpClient();
GetMethod getMethod = new GetMethod();
httpclient.execute(getMethod);
>>>>省略
finally
   getMethod.releaseConnection()
以上code存在一个方法体内,即每调用一次即创建一个httpclient,然后调用完毕销毁这个对象。
HttpClient默认使用SimpleHttpConnectionManager,这个connection manager维持一个connection,httpclient执行GetMethod的时候借用connection manager的connection,并标识in_use为true,而releaseConnection,只是归还并将in_use标记为false以供下次使用而不是真正的close。
    结论:
          1.releaseConnection不会close connection,适合的应用场景是构造一个httpclient,连续多个请求,而且并不是线程安全的。
          2. 解决方案:
             2.1 SimpleHttpConnectionManger的alwaysClose设置为true,这时候release就是真的close了
            2.2 since3.1 增加了shutdown方法调用结束shundown  ConnectionManager
 public void releaseConnection(HttpConnection conn) {
        if (conn != httpConnection) {
            throw new IllegalStateException("Unexpected release of an unknown connection.");
        }
        if (this.alwaysClose) {
            httpConnection.close();
        } else {
            // make sure the connection is reuseable
            finishLastResponse(httpConnection);
        }
        
        inUse = false;
        // track the time the connection was made idle
        idleStartTime = System.currentTimeMillis();
    }

转载地址:http://rmdmi.baihongyu.com/

你可能感兴趣的文章
手动12 - 安装php加速器 Zend OPcache
查看>>
set theme -yii2
查看>>
yii2 - controller
查看>>
yii2 - 增加actions
查看>>
php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)
查看>>
magento url中 uenc 一坨编码 base64
查看>>
强大的jQuery焦点图无缝滚动走马灯特效插件cxScroll
查看>>
Yii2.0 数据库查询
查看>>
yii2 db 操作
查看>>
mongodb group 有条件的过滤组合个数。
查看>>
关于mongodb的 数组分组 array group
查看>>
MongoDB新的数据统计框架介绍
查看>>
mongodb 增加全文检索索引
查看>>
mysql数据库主从同步的问题解决方法
查看>>
QC数据库表结构
查看>>
测试工具厂商的编程语言什么时候“退休”?
查看>>
资源监控工具 - Hyperic HQ
查看>>
LoadRunner中Concurrent与Simultaneous的区别
查看>>
SiteScope - Agentless监控
查看>>
质量度量分析与测试技术 培训大纲
查看>>