提问者:小点点

我想使用HttpClient4来做并发发送请求的RESTfulAPI压力测试,我可以使用一个HttpClient实例吗?


所有的

我想使用HttpClient4做我们的RESTfulAPI压力测试并发发送请求到目标服务器,我可以使用一个HttpClient实例吗?

CloseableHttpClient httpclient = HttpClients.createDefault();

是否必须让每个并发线程到新的不同HttpClient实例?

如何改进设计以减少客户端实例资源但保持相同的并发数,例如让200个线程并发发送每个请求。

使用PoolingHttpClientConnectionManager似乎总是无法同时执行。


共3个答案

匿名用户

我可以使用一个HttpClient实例吗?

在多个线程之间共享单个HttpClient实例是完全可以的。您甚至可以为整个应用程序拥有一个实例。

使用PoolingHttpClientConnectionManager似乎总是无法同时执行。

PoolingHttpClientConnectionManager能够并发执行请求。可能您需要使用setDefaultMaxPerRoute(…)setMaxTotal(…)来扩大池大小。有关如何使用这些设置的详细说明,请参阅我的回答。

要获得更准确的答案,请考虑发布SSCCE。

匿名用户

因为即使你在你的代码中写了一个十亿线程,你也不能在你的处理器上拖动它,因为你的处理器有核的限制,同时只工作X个线程,其中x个线程在处理器中。

另外,我建议你不要想象自行车,用杰米来测试。

匿名用户

正如其他地方所指出的,使用阻塞客户端不是压力测试的好主意,因为它对客户端的压力大于服务器。更好的选择是使用AsyncHttpClient依赖项编写代码。如果您在Eclipse上,您也可以尝试Request estAGE插件,其中您使用Javascript编写测试脚本。

披露:请求时代是由这个答案的作者写的。