Настройка RequestConfig и PoolingHttpClientConnectionManager

Я реализую клиент отдыха с http-клиентом apache. Итак, я настраиваю его с помощью RequestConfig:

<bean id="rest-client.requestConfigBuilder" class="org.apache.http.client.config.RequestConfig"
      factory-method="custom">
    <property name="socketTimeout" value="${rest.readTimeout}"/>
    <property name="connectTimeout" value="${rest.connectTimeout}"/>
    <property name="connectionRequestTimeout" value="${rest.connectTimeout}"/>
</bean>

И с

<bean id="rest-client.connectionManager" class="org.apache.http.impl.conn.PoolingHttpClientConnectionManager">
    <property name="maxTotal" value="${rest.maxTotalConnections}"/>
    <property name="defaultMaxPerRoute" value="${rest.maxTotalConnections}"/>
</bean>

Мой вопрос: как мне выбрать лучшие параметры для тайм-аутов, соединений maxTotal и т. д.? Есть ли какое-нибудь руководство? Потому что то, чем я сейчас занимаюсь — просто случайным образом подбираю эти параметры. Я думаю, что эти значения должны быть установлены разумно. Не могли бы вы объяснить мне, как их выбрать или указать на хорошие статьи. И, может быть, есть какие-то инструменты для профилирования этого?


person Igor Konoplyanko    schedule 29.03.2016    source источник


Ответы (1)


Эти 2 вопроса являются хорошей отправной точкой (что является настройкой по умолчанию в большинстве браузеров): https://stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser и время ожидания клиента HTTP и время ожидания сервера Установка этих параметров сильно зависит от загрузки сервера и задержки в сети. Если ваш клиент будет развертываться в определенной сети, запрашивая несколько серверов, вы можете измерить эти тайм-ауты и определить количество подключений без ограничений и нагрузки на серверы.

person Anton Krosnev    schedule 11.04.2016