gpt4 book ai didi

java - Vertx-java-HttpClient : How to derive maxPoolSize and maxWaitQueueSize values and their impact

转载 作者:行者123 更新时间:2023-12-02 09:15:06 25 4
gpt4 key购买 nike

我在vertx java中创建了一个java后端服务。我使用 httpClient(io.vertx.core.http.HttpClient) 并启用连接池来连接到外部服务。我排除吞吐量为 50。对于对我的服务的每个请求,我需要连接到外部服务。我的服务的平均响应时间为 4 秒,外部服务的平均响应时间约为 3 秒。

现在我的问题是

  1. 如何导出 HttpClient 的 maxPoolSizemaxWaitQueueSize 值?
  2. maxPoolSizemaxWaitQueueSize 值对内存和 CPU 有何影响?
  3. 我可以为 maxPoolSizemaxWaitQueueSize 设置的最大值是多少?
  4. 我还应该使用 HttpClientsetPipelined 选项吗?

最佳答案

首先,请注意 maxPoolSize 适用于每个目的地。因此,如果您想要不同的池大小,请为后端创建不同的 HttpClient

然后,除非您在受限环境中工作,否则我建议将 maxWaitQueueSize 保留为默认值,即 -1(无界)。考虑到您期望的负载,内存中队列的大小应该相对较小。

要确定池大小值,您可以使用 Little's law 。要支持 50 个请求/秒的吞吐量和平均 3 秒的服务时间,您需要一个包含 150 个连接的池。

您可以为 maxPoolSize 设置的最大值取决于系统的配置方式。特别是,您需要配置打开文件描述符的最大数量。

对于您的用例,我相信您应该避免启用管道。首先,并非所有 HTTP 服务器都正确支持它。其次,如果服务时间在 0-3 秒之间变化,则响应可能会被后端保留,因为管道中的先前请求尚未处理(队头阻塞)。

关于java - Vertx-java-HttpClient : How to derive maxPoolSize and maxWaitQueueSize values and their impact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59692663/

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