gpt4 book ai didi

http - Vert.x HTTP 客户端创建的连接数多于 MaxPoolSize

转载 作者:可可西里 更新时间:2023-11-01 17:24:10 24 4
gpt4 key购买 nike

我的应用程序中有 8 个 Verticle。每个 Verticle 都在一个单独的线程上。每个 Verticle 都有一个 WebClient(Vert.x HTTP 客户端)我将 MaxPoolSize 设置为 10。WebClientOptions webClientOptions = new WebClientOptions() .setMaxPoolSize(10)然而,当我检查时

/usr/sbin/ss -o state established -tn  | tail -n +2  | awk '{ print $4 }' | sort |uniq -c | sort -n

在生产主机上,我可以看到每个 IP:Port 有超过 10 个连接。

问题一:MaxPoolSize 是整个应用程序还是每个 Verticle 的全局变量。那么对于 X.X.X.X:Y,我可以从我的应用程序创建 10 个连接还是 80 个连接?

问题二:当我向其 DNS 中具有多个 IP 的主机发送请求时,连接池是按主机还是按 IP?例如 gogo.com 解析为 2 个 IP 地址。我可以创建 10 个到 gogo.com 20 的连接吗?

最佳答案

为了理解它是如何工作的,让我们看一下HttpClientImpl的实际代码。
您可能对这部分最感兴趣:

https://github.com/eclipse/vert.x/blob/master/src/main/java/io/vertx/core/http/impl/HttpClientImpl.java#L161

如您所见,每个WebClient/HttpClient 都有自己的连接池。因此,maxPool 为 10 的 8 个客户端将产生 80 个连接。

关于你的第二个问题,据我所知并从代码中可以看出,连接是按主机进行的,而不是 IP。所以你总是能够建立最多 10 个连接: https://github.com/eclipse/vert.x/blob/39c22d657d2daf640cfbdd8c63e5110fc73474fb/src/main/java/io/vertx/core/http/impl/ConnectionManager.java#L56

脚注:只有当您不触及 http2MaxPoolSize 时,这一切都是正确的。如果这样做,数学就会有点不同。

关于http - Vert.x HTTP 客户端创建的连接数多于 MaxPoolSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49701695/

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