Vertx java HttpClient:如何派生maxPoolSize和maxWaitQueueSize值及其影响
我已经在VertxJava中创建了一个单java后端服务。我使用启用连接池的httpClient(Vertx java HttpClient:如何派生maxPoolSize和maxWaitQueueSize值及其影响,java,connection-pooling,vert.x,vertx-httpclient,Java,Connection Pooling,Vert.x,Vertx Httpclient,我已经在VertxJava中创建了一个单java后端服务。我使用启用连接池的httpClient(io.vertx.core.http.httpClient)连接到外部服务。我的吞吐量为50。对于我的服务的每个请求,我都需要连接到外部服务。我的服务的平均响应时间为4秒,外部服务的平均响应时间约为3秒 现在我的问题是 如何为HttpClient导出maxPoolSize和maxWaitQueueSize值 maxPoolSize和maxWaitQueueSize值对内存和cpu有什么影响 我可以设
io.vertx.core.http.httpClient
)连接到外部服务。我的吞吐量为50。对于我的服务的每个请求,我都需要连接到外部服务。我的服务的平均响应时间为4秒,外部服务的平均响应时间约为3秒
现在我的问题是
maxPoolSize
和maxWaitQueueSize
值maxPoolSize
和maxWaitQueueSize
值对内存和cpu有什么影响maxPoolSize
和maxWaitQueueSize
的最大值是多少HttpClient
的setpipeline
选项首先,注意
maxPoolSize
适用于每个目的地。因此,如果需要不同的池大小,请为后端创建不同的HttpClient
然后,除非您在受限环境中工作,否则我建议将maxWaitQueueSize
保留为默认值,即-1
(无界)。考虑到预期的负载,内存中队列的大小应该相对较小
确定可以使用的池大小值。要支持平均3s服务时间的50 req/sec吞吐量,您需要150个连接池
可以为maxPoolSize
设置的最大值取决于系统的配置方式。特别是,您需要配置打开的文件描述符的最大数量
对于您的用例,我相信您应该避免启用管道。首先,并非所有HTTP服务器都正确支持它。第二,如果服务时间在0-3秒之间变化,则后端可能会保留响应,因为尚未处理管道中以前的请求(行首阻塞)