Есть ли в пуле подключений Java HTTP время выселения? Это можно установить? - PullRequest
3 голосов
/ 16 февраля 2011

Пул Java-соединений для постоянных соединений описан в http://download.oracle.com/javase/6/docs/technotes/guides/net/http-keepalive.html. Однако нет никаких указаний на то, удаляются ли когда-либо соединения из кэша, если они не используются повторно, и если да, то какова длительность тайм-аута.

Единственной ссылкой на это я нашел следующие комментарии от http://www.java.net/forum/topic/performance/general-performance-discussion/reusing-socket-connections-httpurlconnection-0:

"сокеты проверки активности подвержены тайм-ауту. Если сервер отправляет обратно тайм-аут в заголовке HTTP, то используется это значение тайм-аута. В противном случае тайм-аут составляет всего 5 секунд, после чего сокет не будет повторно использоваться [...] К сожалению, вы не можете установить тайм-аут, это запрограммировано в недрах реализации. "

Если это правда, это объясняет какое-то странное поведение, которое мы наблюдаем, и я написал небольшой тестовый пример, который, кажется, подтверждает это. (Использование Java 1.6.20 в Windows.)

Кто-нибудь знает какую-либо документацию по этому вопросу? Также этому комментарию уже несколько лет. Тайм-аут все еще жестко задан или его можно установить?

1 Ответ

1 голос
/ 16 февраля 2011

Звучит довольно логично.Документация для сетевых свойств (кроме тех, которые вы можете установить через основной API): здесь .AFAICT единственное, что вы можете установить, это использовать ли keep-alive и сколько подключений к пулу.

В Java 7 они , по-видимому, проверяются только при запуске.На java 6 docs нет никаких замечаний по этому поводу, но я полагаю, что тогда это должен быть недосмотр документации.Таким образом, в принципе, чтобы отключить keepalive, вы должны передать его в командной строке следующим образом:

java -Dhttp.keepalive=false ...

Или уменьшить пул на хост:

java -Dhttp.maxConnections=1 ...

Вы можететакже попробуйте с System.setProperty(), но это, предположительно, не сработает.

Было бы интересно узнать, какие проблемы это вызывает, возможно, где-нибудь найти решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...