代码之家  ›  专栏  ›  技术社区  ›  Gnana

使用tomcat的apache httpclient连接池keep alive

  •  0
  • Gnana  · 技术社区  · 6 年前

    我使用的是tomcat 8.x的tomee 7.1.0,我试图在poc应用程序中实现http连接池的概念。我编写了简单的rest服务,并将其部署到本地机器中。休息服务启动并运行。 我用apache http客户端和http池编写了一个简单的客户端程序,它连接我的本地web服务,能够连接并且运行良好。

    PoolingHttpClientConnectionManager pool = new PoolingHttpClientConnectionManager();
    pool.setDefaultMaxPerRoute(5);
    pool.setMaxTotal(5);
    final CloseableHttpClient httpclient = HttpClients.custom().setConnectionManager(pool).build();
    final String url = "http://localhost:8080/healthz";
    

    我用过 https://huongdanjava.com/create-and-use-http-client-connection-pool.html 示例代码,并使用netstat命令验证客户端的池连接数。很好。

    按照keep alive的概念,客户端请求头应该有连接:keep alive和服务器响应头应该提供连接:keep alive然后相同的连接可以重复使用,否则它不能是相同的连接。

    我可以在客户机请求头中看到keep alive值,但是在响应中没有keep alive值,那么apache客户机如何重用连接。但是apache客户端有5个连接。我已经用netcat验证过了。

    我已经使用jmx(catalina,线程池->http:8080)验证了tomcat open连接,它显示连接计数为1,keepalivecount=0。这些是默认值。Tomcat中没有5个已打开连接的标记。

    我的问题

    1. apache http客户端有5个连接,tomcat服务器没有显示任何连接。如何在tomcat中检查打开的连接?
    2. 如果没有来自服务器响应头的keep alive值,客户端如何将这些连接保持为池连接?

    根@主机:~ netstat-tulpna grep 26047 tcp6 10 26047,1,0
    关闭等待26047 / Java TCP6 1 0 127.0.0.1 48 790
    127.0.0.1:8080关闭等待26047 /JAVA TCP6 1 0 127.0.0.1 48 788 88 120.0.1 8080关闭等待 26047 / Java TCP6 1 1 127.0.0.1
    127.0.0.1:8080关闭-等待26047/JA

    客户端请求头

    标题-http-outgoing-1>>get/healthz http/1.1[调试]标题- http-outgoing-1>>主机:本地主机:8080[调试]标题- http-outgoing-1>>连接:保持活动[调试]标题- http-outgoing-1>>用户代理:apache httpclient/4.5.6 (Java/1.80Y181)[Debug ]标题- HTTP OutGoang-1≫Gt;接受编码: gzip,deflate[调试]头-http-outgoing-4>gt;get/healthz http/1.1协议

    服务器响应头 [调试]连线-http-outgoing-0<< “http/1.1200[\r][\n]”[debug]wire-http-outgoing-0<<“日期:thu, 2018年10月11日14:28:03 GMT[\r][\n]“[debug]wire-http-outgoing-0<< “内容长度:0[\r][\n]”[debug]wire-http-outgoing-0<<“服务器: apache tomee[\r][\n]“[debug]wire-http-outgoing-0<”[\r][\n]”

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.6</version>
    </dependency>
    
    0 回复  |  直到 6 年前
    推荐文章