vert.x - 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.x 代码后,我发现 maxPoolSize 是每个目的地
因此,在上述情况下,它将是 http 客户端的数量 * maxPoolSize(每个目的地)
我预计对任何目标主机的并发请求不会超过 100 个。因此,将此值设置为 5 会给我 - 5 * 36(36 个 http 客户端)= 180 个连接
注意:如果您在具有多个 Verticle 的实例中运行大量 http 客户端,则需要配置打开文件描述符的最大数量
推荐阅读
- flutter - 是否有使用 Dart grpc 的初始超时解决方案?
- sql - postgresqlExecStatement(conn, statement, ...) 中的错误:RS-DBI 驱动程序:(无法检索结果:错误:关系“分析”不存在
- kubernetes - Istio 演示配置文件中的 kiali 仪表板登录失败
- c# - 如何使用 NetworkStream.DataAvailable 属性检测 TCP 连接失败?
- c++ - C++轻量级嵌入式itoa和fptoa实现
- javascript - 如何从字符串创建 React 组件
- sql - SQL server - 如何将一列拆分为多列?
- jquery - jQuery 将类添加到下一个或上一个图像——只工作一次?
- nativescript - android中的NativeScript + http PROPFIND方法:可能吗?
- html - 将 Angular 材质表单字段编号格式化为 2 个小数位?