扫码阅读
手机扫码阅读

网关使用 Apache HttpClient 连接池出现异常

74 2024-07-21

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:网关使用 Apache HttpClient 连接池出现异常
文章来源:
BUG弄潮儿
扫码关注公众号
文章摘要

最近网关在发版时出现了大量的org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool异常。这是由于在高并发场景下,不使用连接池时,HTTP连接的建立过程耗时,特别是需要三次握手的HTTP连接。使用连接池可以重用已建立的连接,提高访问的吞吐量。

虽然传统的HttpURLConnection不支持连接池,但Apache的HttpClient支持。高并发场景下,如网关系统,使用HttpClient和连接池可以提高TPS。Apache HttpClient的早期版本使用PoolingClientConnectionManagerDefaultHttpClient实现连接池,但这些在4.3.x版本后过时,新版本使用PoolingHttpClientConnectionManager

为了使用Apache HttpClient的连接池特性,需要在pom.xml中添加httpclienthttpcorehttpclient-cache等依赖。连接池的主要参数配置在HttpPoolProperties类中,包括maxTotaldefaultMaxPerRoutemaxPerRoute等,控制连接数和超时设置。

获取HttpClient对象的代码示例展示了如何创建一个配置有连接池的CloseableHttpClient实例。其中包括了设置最大连接数、默认路由的最大连接数、针对特定主机的最大连接数,以及对请求重试的处理策略。

文章最后提醒读者点赞和关注,表达对读者的感谢。

想要了解更多内容?

查看原文:网关使用 Apache HttpClient 连接池出现异常
文章来源:
BUG弄潮儿
扫码关注公众号