最近,我遇到了Oracle提供的java属性 http.maxConnections 的2个稍微不同的定义。
here它的定义为
如果启用了HTTP keepalive,则此值将确定每个目标同时保持活动状态的最大空闲连接数。
here被定义为
表示每个目的地在任何给定时间保持连接的最大数量
让我困惑的是上面第一个定义中提到的 idle 一词。考虑到第一个定义,我的理解是,该属性仅限制连接池中存在但未使用的连接数。这意味着无论采用哪种配置,我都可以同时向同一端点运行的活动端点有“无限”个活动连接。如果我考虑上面的第二个定义(Oracle删除了te关键字),我的理解也不尽相同。闲。在这最后一步中,此属性似乎是要限制到端点的连接总数,因此,如果我配置http.maxConnections = 10,则最多可以有10个同时呼叫到同一端点。
有人可以消除我的疑虑吗?
谢谢!
(ps:为了完整起见,我对Java8行为感兴趣)
答案 0 :(得分:1)
代码检查表明,该属性仅用于限制保持活动的高速缓存的大小-因此,除非我误认为这实际上是最大空闲连接数。
答案 1 :(得分:0)
实现库像标准语言一样模糊地使用它。
例如,apache http 组件,可以说是 java 中最常用的 HTTP 客户端,使用它来计算到单个主机的最大并发连接数:https://hc.apache.org/httpcomponents-client-ga/httpclient/xref/org/apache/http/impl/client/HttpClientBuilder.html#L1005