首页 > 解决方案 > Vert Http Client 最大连接池?这个池是每个端点还是总数?

问题描述

我正在为 api-gateway 使用 vertx Web 客户端(3.8.5)并将 setMaxPoolSize 设置为 20。这个限制是每个端点还是所有端点的总和?

我正在部署我的应用程序,每个 Verticle 有 36 个顶点和 1 个 Web 客户端,总共有 36 个 Web 客户端,我的应用程序需要连接到 1000 多个不同的 ip:port。现在,为了利用连接池的好处,如果上述限制是对总连接数的限制,我需要 setMaxPoolSize >= 1000,这使得来自应用程序的总连接数等于 1000 * 36 >= 36000。以上建议的设置是什么用例?

如果我设置 maxPoolSize = 20 并且它们都没有过期(过期时间 = 60 秒)并且只假设其中有 10 个正在使用,那么当请求不在池中的 ip:port 时会发生什么。它是否排队或其中一个未使用的连接被断开并建立了一个新连接(用于新的 ip:port)?

我的 api-gateway 客户端配置应该是什么来处理不同 ip:port 的多个并发请求?

谢谢,尼蒂什

标签: vert.xvertx-verticlevertx-httpclientvert.x-webclient

解决方案


阅读 vert.x 代码后,我发现 maxPoolSize 是每个目的地

因此,在上述情况下,它将是 http 客户端的数量 * maxPoolSize(每个目的地)

我预计对任何目标主机的并发请求不会超过 100 个。因此,将此值设置为 5 会给我 - 5 * 36(36 个 http 客户端)= 180 个连接

注意:如果您在具有多个 Verticle 的实例中运行大量 http 客户端,则需要配置打开文件描述符的最大数量


推荐阅读