gpt4 book ai didi

java - 我是否正确使用 CloseableHttpClient ?

转载 作者:行者123 更新时间:2023-11-30 02:03:27 24 4
gpt4 key购买 nike

这是我如何使用 CloseableHttpClient:

private static final CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(myurl);
HttpResponse httpResponse = httpClient.execute(httpGet);

基本上,上面的代码位于单例类中,因此只有一个 httpClient 实例为所有请求提供服务。

如果一个 httpClient 为所有请求提供服务,这会影响性能吗?因为我在接收 httpResponse 时发现系统速度缓慢。

我的另一个问题是我是否需要关闭上述任何资源,如果需要,那么什么时候关闭?

最佳答案

考虑使用Pooling Connection Manager ,根据文档:

PoolingHttpClientConnectionManager is a more complex implementation that manages a pool of client connections and is able to service connection requests from multiple execution threads. Connections are pooled on a per route basis. A request for a route for which the manager already has a persistent connection available in the pool will be serviced by leasing a connection from the pool rather than creating a brand new connection.

所以我建议修改您的代码,例如:

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
//configure it as per your reqiurements, i.e.
cm.setMaxTotal(5000);
cm.setDefaultMaxPerRoute(20);
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(cm)
.build();

另请注意,有一个名为 Apache JMeter 的免费开源负载测试工具。其中特别使用 Apache HttpComponents在幕后,您可以将其用于负载测试目的,或者如果您有疑问,可以查看底层实现。

我建议重新考虑你的方法并使用 JMeter,因为当涉及到 Web 应用程序负载测试时,你需要考虑很多因素( header 、cookie、缓存、身份验证、AJAX 请求、嵌入式资源等),并且它可能需要付出巨大的努力才能正确实现一切。您可以通过其 API 创建/运行 JMeter 测试如果需要,请从 Java 代码中查看 Five Ways To Launch a JMeter Test without Using the JMeter GUI文章了解更多详细信息。

关于java - 我是否正确使用 CloseableHttpClient ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52024150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com