所有的
我想使用HttpClient4做我们的RESTfulAPI压力测试并发发送请求到目标服务器,我可以使用一个HttpClient实例吗?
CloseableHttpClient httpclient = HttpClients.createDefault();
是否必须让每个并发线程到新的不同HttpClient实例?
如何改进设计以减少客户端实例资源但保持相同的并发数,例如让200个线程并发发送每个请求。
使用PoolingHttpClientConnectionManager似乎总是无法同时执行。
我可以使用一个HttpClient实例吗?
在多个线程之间共享单个HttpClient
实例是完全可以的。您甚至可以为整个应用程序拥有一个实例。
使用PoolingHttpClientConnectionManager似乎总是无法同时执行。
PoolingHttpClientConnectionManager
能够并发执行请求。可能您需要使用setDefaultMaxPerRoute(…)
和setMaxTotal(…)
来扩大池大小。有关如何使用这些设置的详细说明,请参阅我的回答。
要获得更准确的答案,请考虑发布SSCCE。
因为即使你在你的代码中写了一个十亿线程,你也不能在你的处理器上拖动它,因为你的处理器有核的限制,同时只工作X个线程,其中x个线程在处理器中。
另外,我建议你不要想象自行车,用杰米来测试。
正如其他地方所指出的,使用阻塞客户端不是压力测试的好主意,因为它对客户端的压力大于服务器。更好的选择是使用AsyncHttpClient依赖项编写代码。如果您在Eclipse上,您也可以尝试Request estAGE插件,其中您使用Javascript编写测试脚本。
披露:请求时代是由这个答案的作者写的。