2013-08-30 4 views
1

Я разрабатываю клиент веб-сервиса JAX-WS. Этот клиент является частью веб-приложения, развернутого на сервере Glassfish 3.2.1 и вызывается из сервлета. ОС - Windows Server 2003, и я использую JDK 6. Он отправляет несколько сотен запросов в минуту на веб-службу, развернутую на другой машине.Многие соединения TIME_WAIT в клиенте WS

Проблема заключается в том, что клиент создает все большее количество соединений в статусе TIME_WAIT (я вижу его в netstat). Я думал, что включение опции «keep-alive» решит проблему, но этого не произошло - клиент WS открывает новые подключения вместо повторного использования соединений в статусе TIME_WAIT.

Я попытался настроить опцию «maxConnections» в Glassfish, но это не помогло. Я также попробовал JDK 7 с тем же результатом.

Возможно ли закрыть соединение сразу после завершения запроса клиента или повторно использовать существующее соединение в статусе TIME_WAIT?

+0

Вы должны изучить, почему HTTP keep-alive не работает. – EJP

ответ

1

В соответствии с статьей Microsoft KB «Состояния TCP-соединения и вывод Netstat» (http://support.microsoft.com/kb/137984) совершенно нормально, когда закрытые соединения остаются в TIMED_WAIT после того, как клиент отключился. Это часть процесса очистки ОС. Для Суперпользователя есть довольно хорошее объяснение (https://superuser.com/questions/173535/what-are-close-wait-and-time-wait-states).

Смежные вопросы