У меня возникла та же проблема, и я изучал сокеты, чтобы избавиться от этой проблемы.
Позвольте мне сказать несколько слов, но прежде чем сказать, что я не программист на Java.
Я не буду объяснять, что такое close_wait, поскольку Брайан Уайт уже сказал все, что следует сказать.
Чтобы избежать close_wait, вам нужно убедиться, что ваш сервер не закрывает соединение после отправкиверните ответ, потому что тот, кто отключится первым, застрянет в close_wait и time_wait.Итак, если ваш сервер застревает в close_wait, он сообщает мне, что он отключается после отправки ответа.
Вы должны избежать этого, выполнив несколько действий.
1 - Если ваш клиентприложение не использует протокол http 1.1, вы должны настроить его на использование этого из-за опции заголовка 'keep-alive
http.
2 - Если ваш клиент работает с http 1.1 и это не работает, или, если вынеобходимо использовать http 1.0, необходимо установить свойство заголовка запроса на подключение:
connection: keep-alive
Это говорит серверу, что ни клиент, ни сервер не должны отключаться после выполнения запроса.Благодаря этому ваш сервер не будет отключаться после каждого полученного запроса.
3 - В вашем клиенте повторно используйте сокет.Если вы создаете много клиентов сокетов в цикле, например, вы должны создать сокет один раз, и они используют его каждый раз, когда вам нужно отправить запрос.Подход, который я использовал в своем приложении, заключается в том, чтобы иметь пул сокетов и получить один доступный сокет (который уже подключен к серверу и имеет свойство keep-alive).Затем я использую его, и когда я закончу, я положу его обратно в бассейн для повторного использования.
4 - Если вам действительно нужно отключиться после отправки запроса, убедитесь, что ваш клиент делает это, и оставьте connection: keep-alive
.
И да, у вас может бытьпроблемы, когда у вас много close_waits или time_waits на стороне сервера.
Проверьте эту [ссылку] [1], которая объясняет, что такое keep-alive
.
Надеюсь, это было полезно.С этими вещами мне удалось решить мою проблему.
[1]: http://www.w3.org/Protocols/HTTP/1.1/draft-ietf-http-v11-spec-01.html#Persistent Соединения