StormCrawler: Тайм-аут ожидания соединения с бассейном

Вопрос задан: 1 год назад Последняя активность: 1 год назад
up 0 down

Мы постоянно получаем следующее сообщение об ошибке, когда мы увеличиваем либо число потоков или количество исполнителей для болта Fetcher.

org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:286) ~[stormjar.jar:?]
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:263) ~[stormjar.jar:?]
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:190) ~[stormjar.jar:?]
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) ~[stormjar.jar:?]
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) ~[stormjar.jar:?]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) ~[stormjar.jar:?]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:220) ~[stormjar.jar:?]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:164) ~[stormjar.jar:?]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:139) ~[stormjar.jar:?]
at com.digitalpebble.stormcrawler.protocol.httpclient.HttpProtocol.getProtocolOutput(HttpProtocol.java:206) ~[stormjar.jar:?]

Является ли это из-за утечки ресурсов или какого-либо жесткого ограничения на размер HTTP пула потоков? Если речь идет о пуле потоков, есть ли способ увеличить размер пула?

1 ответ

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 0 down accepted

Существует макс число соединений для множества бассейнов в HttpProtocol, Который является количество потоков используется (fetcher.threads.number). Поскольку бассейн является статическим, он используется всеми исполнители на одной и тот же работник. Я рекомендовал бы использовать один экземпляр FetcherBolt на одного работника, это будет иметь то же значение, как fetcher.threads.number и вы не будете иметь эту проблему.

Кроме того, вы могли бы дать okhttp протокол попробовать. Это более надежный для открытых и крупных сканирований. Видеть WIKI страницы протоколов для сравнения объектов.