zoukankan      html  css  js  c++  java
  • [Java] HttpClient有个古怪的stalecheck选项

    打开stale check会让每次http请求额外消耗15毫秒。而且stalecheck选项缺省是打开的。

    这有必要吗????

    在局域网里面调用web api service的时候会死人的。


    http://stackoverflow.com/questions/11219325/why-does-defaulthttpclient-send-data-over-a-half-closed-socket
    http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html
    http://www.mail-archive.com/httpclient-users@hc.apache.org/msg02710.html


    去查了一些资料,发现我们为了性能都应该关闭stalecheck。

    有人建议java的httpClient需要在连接池里面加上一个idle monitor thread去把broken的连接去除掉。否则re-use的stale connection可能已经被server断开了,则会引起异常。

    但是由于java的传统通讯方式是阻塞的,所以全局的idle monitor thread是无法通用的。为了支持大量连接,为每个连接配置一个monitor thread也是不可行的。


    因此,apache httpClient的官方文档建议:

    ClientConnectionManager#closeExpiredConnections()
    ClientConnectionManager#closeIdleConnections()
    调用者要自己定时调用上述两个方法之一,来减少broken stale connections


    与此同时,调用者需要自己决定,当发现io exception的时候,是否要retry。


  • 相关阅读:
    Beta阶段团队项目开发篇章2
    Beta阶段团队项目开发篇章1
    Alpha阶段博客链接
    大学生对技术网站需求的调查问卷结果分析
    关于大学生对技术网站需求的问卷调查
    第十。。。三周嘞
    进入第十一周喽
    第十周了耶~
    第九周也要过去啦~~~
    第,八,周,啦
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330360.html
Copyright © 2011-2022 走看看