为 Http 连接池设置每个路由的最大连接数

问题描述 投票:0回答:1

我正在编写一个爬虫来爬取一些论坛内容,并且我所有的HTTP连接都使用Apache Http Client。 根据官方文档的建议,我对单个论坛服务器使用单个 Http 客户端,并且该客户端配备了 PoolingHttpClientConnectionManager 实例,可以同时通过多个执行线程执行多个请求。

此池连接管理器的一个重要属性是每个路由的最大连接数(默认为 2)。我很困惑哪个是最佳(一般)限制,可以确保爬行速度但不会使服务器超载?

(一般来说,我的意思是在不同情况下适用于一般论坛服务器的平均数量,因为我在初始化连接管理器时将其设置为静态)。

除此之外,如果有人知道如何根据 HttpClient 4.5 或其他类似库中的服务器反馈动态管理每个路由的限制,我将非常感激。

非常感谢您的帮助!

http web-crawler httpclient apache-httpclient-4.x
1个回答
0
投票

您可以这样配置:

    @Bean
    public CloseableHttpClient httpClient() {
        return HttpClientBuilder.create()
                .setMaxConnPerRoute(MAX_CONN_PER_ROUTE)
                .setMaxConnTotal(MAX_CONN)
                .setConnectionTimeToLive(120, TimeUnit.SECONDS)
                .build();
    }

至于动态管理每个路由的限制,我认为您每次都创建了一个新的 HttpClient。

© www.soinside.com 2019 - 2024. All rights reserved.