Vai*_*aut 4 java connection-pooling vert.x vertx-httpclient
我在vertx java 中创建了一个 java 后端服务。我使用启用了连接池的httpClient ( io.vertx.core.http.HttpClient)来连接到外部服务。我不包括50 的吞吐量。对于对我的服务的每个请求,我都需要连接到外部服务。我的服务的平均响应时间为 4 秒,外部服务的平均响应时间约为 3 秒。
现在我的问题是
maxPoolSize和maxWaitQueueSize取值?maxPoolSize和maxWaitQueueSize价值?maxPoolSize和的最大值是maxWaitQueueSize多少?setPipelining选项HttpClient吗?首先,请注意这maxPoolSize适用于每个目的地。因此,如果您想要不同的池大小,请HttpClient为您的后端创建不同的池。
然后,除非您在受限环境中工作,否则我建议保留maxWaitQueueSize默认值,即-1(无界)。考虑到您期望的负载,内存中队列的大小应该相对较小。
要确定池大小值,您可以使用Little 定律。要以平均 3 秒的服务时间支持 50 请求/秒的吞吐量,您需要一个包含 150 个连接的池。
您可以设置的最大值maxPoolSize取决于系统的配置方式。特别是,您需要配置打开文件描述符的最大数量。
对于您的用例,我相信您应该避免启用管道。首先并不是所有的 HTTP 服务器都正确支持它。其次,如果服务时间在 0-3 秒之间变化,则后端可能会保留响应,因为尚未处理管道中的先前请求(行头阻塞)。
| 归档时间: |
|
| 查看次数: |
937 次 |
| 最近记录: |