【发布时间】:2013-12-08 18:11:33
【问题描述】:
在 Java 中配置 http 连接池以支持对同一服务器的大量并发 http 调用有哪些通用指南/建议?我的意思是:
- 最大连接数
- 每条路由的最大默认连接数
- 重用策略
- 保持活力策略
- 存活时间
- 连接超时
- ....
(我使用的是 Apache http 组件 4.3,但我可以探索新的解决方案)
为了更清楚,这是我的情况:
我开发了一个 REST 资源,它需要对 AWS CloudSearch 执行大约 10 次 http 调用才能获得要收集到最终结果中的搜索结果(我真的无法通过单个查询获得)。 整个操作必须少于 0.25 秒。因此,我在 10 个不同的线程中并行运行 http 调用。 在基准测试期间,我注意到只有很少的并发请求 5,我的目标就达到了。但是,将并发请求增加到 30 个,由于连接时间大约需要 1 秒,因此性能会大大下降。相反,在并发请求很少的情况下,连接时间约为 150 毫秒(更准确地说,第一个连接需要 1 秒,后面的所有连接大约需要 150 毫秒)。我可以确保 CloudSearch 在不到 15 毫秒的时间内返回其响应,因此我的连接池中某处存在问题。
谢谢!
【问题讨论】:
标签: java multithreading apache http