0

All

I want to use HttpClient4 to do our RESTful API stress testing by concurrently send request to target server , Can I use one HttpClient instance ?

CloseableHttpClient httpclient = HttpClients.createDefault();

whether it must let each concurrent thread to new different HttpClient instance ?

How to improve design to reduce client instance resource but keep the same concurrent number , such let 200 thread send each request concurrently .

Use PoolingHttpClientConnectionManager it seems always can't concurrently execute .

4

3 回答 3

1

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

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

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

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

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

于 2013-10-14T08:23:39.480 回答
0

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

披露:RequestAge 是由这个答案的作者写的。

于 2013-11-04T07:16:59.670 回答
0

你可以做到,但你需要有很多线程的电脑。因为即使您在代码中编写了十亿个线程,也无法在处理器上对其进行调整,因为您的处理器有内核限制,并且同时只能工作 X 个线程,其中处理器中的 x 个内核数。即使您运行所有这些线程,它们也不会同时工作,它们只会以异步方式工作。

而且我还建议您不要对自行车进行成像并使用jmeter进行测试。

于 2013-10-14T08:24:04.507 回答