gpt4 book ai didi

java - Apache HttpClient 负载平衡池连接

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:06 24 4
gpt4 key购买 nike

我们正在使用持久连接,并尝试在 x 时间后强制断开连接。虽然我看到我们理论上可以使用 ConnectionKeepAliveStrategy,但我可以说这只适用于响应之后......即当连接空闲时。

我们遇到的问题..

假设有 1 个客户端,通过负载均衡器访问 2 个服务器(A、B)。当其中一台服务器脱机 (B) 时,所有新连接都会在服务器 (A) 上建立。现在,当另一台服务器 (B) 恢复在线时,它将保持空闲状态,因为所有连接都在另一台服务器 (A) 上。只要客户端继续访问低于空闲超时/保持 Activity 的连接,这将继续,使 B 服务器空闲(也称为零连接)。

我们想要做的是强制所有持久连接定期关闭(在“随机时间窗口”内。理想情况下我们不希望所有连接同时重置)。对此有何建议?

我们尝试扩展 HttpClientConnectionManager,并跟踪连接打开了多长时间,然后在 x 时间后将其关闭……但这似乎不起作用。我猜这是因为 HttpClientConnection 实际上不是实际的连接,而是一个代理,看起来像在这个代理下面,它实际上是在“使用”已建立的连接之一,因此不可能真正跟踪建立这些底层连接的时间。

想法?

现在我正在考虑简单调用的想法:HttpRequestBase.abort() 在我们对其执行请求后每分钟 1 个连接,我认为这会让我们更接近期望的行为。

最佳答案

可以使用 TTL(生存时间)参数限制连接的总生命周期。

HttpClientBuilder.create()
.setConnectionTimeToLive(1, TimeUnit.MINUTES)
.build();

这将强制所有连接在一分钟后更新。

关于java - Apache HttpClient 负载平衡池连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com