Java net socketexception connection reset что делать

Java net socketexception connection reset что делать

Что вызывает мое java. net. SocketException: сброс соединения?

мы видим часто java.net.SocketException: Connection reset ошибки в наших журналах для компонента, который вызывает стороннюю веб-службу, которая отправляет SMS-сообщения.

наше приложение написано на Java и работает на базе Tomcat 5.5. Его написали подрядчики, которых у нас больше нет. Текущая команда не имеет реального опыта Java, и мы не уверены, где Connection reset ошибка на самом деле и откуда, и как идти об отладке.

проблема кажется полностью прерывистой, и не связаны с сообщениями, которые мы пытаемся отправить.

любые предложения о том, что типичные причины этого исключения могут быть, и как мы могли бы продолжить, приветствуются.

весь стек вызовов включен ниже для полноты.

( com.companyname.mtix.sms это наша составляющая)

строка нашего кода, из которой выбрасывается исключение, является последней строкой в приведенном ниже фрагменте кода.

13 ответов:

javadoc для SocketException утверждает, что это

брошенный, чтобы указать, что есть ошибка в базовом протоколе, таком как ошибка TCP

в вашем случае похоже, что соединение было закрыто сервером подключения. Это может быть проблема с запросом, который вы отправляете, или проблема в их конце.

чтобы помочь отладке вы можете посмотреть на использование такого инструмента, как Wireshark для просмотра фактического сетевой пакет. Кроме того, есть ли альтернативный клиент для вашего кода Java, который вы могли бы использовать для тестирования веб-службы? Если это было успешно, это может указывать на ошибку в коде Java.

Как вы используете Commons HTTP Client посмотрите на общее руководство по ведению журнала HTTP-клиента. Это расскажет вам, как зарегистрировать запрос на уровне HTTP.

ошибка происходит на вашей стороне а не с другой стороны. Если другая сторона сбросит соединение, то сообщение об исключении должно сказать:

причиной является соединение внутри HttpClient несвежее. Проверка устаревшего соединения для SSL не устраняет эту ошибку. Решение: сбросьте свой клиент и воссоздайте его.

при попытке доступа к веб-службам, развернутым на сервере Glassfish3, может потребоваться настроить параметры пула http-потоков. Это фиксированные SocketExceptions у нас было, когда многие параллельные потоки вызывали веб-службу.

  1. перейти в консоль администратора
  2. перейдите к «конфигурации»->»конфигурация сервера»->»пулы потоков»->»http-thread-pool».
  3. изменить параметр «максимальный размер пула потоков» с 5 до 32
  4. изменить параметр «мин Размер пула потоков» от 2 до 16
  5. Перезапустить Glassfish.

в моем случае это было потому, что мой кот был установлен с недостаточным maxHttpHeaderSize для особо сложного запроса SOLR.

надеюсь, что это поможет кому-то там!

Я тоже наткнулся на эту ошибку. В моем случае проблема была в том, что я использовал JRE6, с поддержкой TLS1.0. Сервер поддерживал только TLS1.2, поэтому эта ошибка была выдана.

Я получаю эту ошибку все время и считают это нормальным.

Это происходит, когда одна сторона пытается читать, когда другая сторона уже повесил трубку. Таким образом в зависимости от протокола это может или не может обозначить проблему. Если мой клиентский код специально указывает серверу, что он собирается повесить трубку, то клиент и сервер могут повесить трубку одновременно, и это сообщение не произойдет.

способ реализации моего кода для клиента просто повесьте трубку, не попрощавшись. Затем сервер может поймать ошибку и игнорировать ее. В контексте HTTP я считаю, что один уровень протокола позволяет более одного запроса на соединение, а другой-нет.

таким образом, вы можете видеть, как потенциально одна сторона может продолжать висеть на другой. Я сомневаюсь, что ошибка, которую вы получаете, имеет какое-либо пиратское отношение, и вы можете просто поймать ее, чтобы она не заполняла ваши файлы журнала.

исключение означает, что сокет был неожиданно закрыт с другой стороны. Поскольку вы вызываете веб-службу, этого не должно произойти — скорее всего, вы отправляете запрос, который вызывает ошибку в веб-службе.

попробуйте записать весь запрос в этих случаях, и посмотреть, если вы заметили что-нибудь необычное. В противном случае свяжитесь с поставщиком веб-услуг и отправьте им свой зарегистрированный проблемный запрос.

эта ошибка возникает на стороне сервера, когда клиент закрыл соединение до того, ответ может быть возвращен через сокет. В сценарии веб-приложения не все из них опасны, так как они могут быть созданы вручную. Например, путем выхода из браузера до получения ответа.

Я знаю, что этот поток немного стар, но хотел бы добавить мои 2 цента. У нас была такая же ошибка «сброса соединения» сразу после нашего одного из выпусков.

первопричина была, наша apache сервер был сбит для развертывания. Весь наш сторонний трафик проходит через apache и мы получали ошибку сброса соединения из-за того, что он был вниз.

Это старый поток, но я столкнулся с java.net.SocketException: Connection reset вчера.

в серверном приложении были изменены настройки регулирования, чтобы разрешить только 1 соединение за раз! Таким образом, иногда звонки проходили, а иногда нет. Я решил проблему, изменив настройки регулирования.

Я тоже получал именно эту ошибку: Connection reset by peer . Исключение был поднят по шаблону остальных источников при выполнении postForObject() метод. Для меня проблемой был слишком длинный HTTP URL запрос. Поэтому сначала проверьте, является ли созданный URL-адрес тем, что он должен быть, и если ваш сервер действительно должен иметь возможность обрабатывать запросы такой длины, просто перейдите к конфигурации сервера и поднимите допустимую длину URL-запросов по умолчанию.

это решило проблему для меня, но помните: приложение может не работать в некоторых интернет-браузерах, особенно старых, так как они имеют фиксированную максимальную длину URL-запросов.

надеюсь, что это помогает.

Я получил эту ошибку, когда текстовый файл, который я пытался прочитать, содержал строку, которая соответствовала антивирусной подписи на нашем брандмауэре.

я столкнулся с этой проблемой. Это вызвано заблокированными сеансами в базе данных, которые связаны с таблицами, которые вы собираетесь изменить через Webservice.

найти заблокированные идентификаторы сеанса:

это должно дать вам подсказки о том, что таблица заблокирована, но еще не завершает изменения.

Что вызывает сброс соединения java.net.SocketException:?

Мы видим частые, но прерывистые ошибки java.net.SocketException: Connection reset в наших журналах. Мы не уверены в том, откуда на самом деле берется ошибка Connection reset и как приступить к отладке.

Проблема, по-видимому, не связана с сообщениями, которые мы пытаемся отправить. Обратите внимание, что сообщение не является connection reset by peer .

Есть ли какие-либо предположения о том, каковы типичные причины этого исключения и как мы можем действовать?

Вот репрезентативный стек trace ( com.companyname.mtix.sms -это наш компонент):

Наш компонент-это веб-приложение, работающее под Tomcat, которое вызывает стороннюю веб-службу, которая отправляет SMS сообщения, так уж получилось. Строка нашего кода, из которой выбрасывается исключение, является последней строкой в приведенном ниже фрагменте кода.

15 Ответов

Javadoc для SocketException утверждает, что это

Брошено, чтобы указать, что существует ошибка в базовом протоколе, такая как ошибка TCP

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

Чтобы облегчить отладку, вы можете посмотреть на использование такого инструмента, как Wireshark , чтобы просмотреть фактические сетевые пакеты. Кроме того, есть ли альтернативный клиент для вашего кода Java, который вы могли бы использовать для тестирования веб-службы? Если это было успешно, то это может указывать на ошибку в коде Java.

Поскольку вы используете Commons HTTP Client, взгляните на общее руководство по ведению журнала клиента HTTP . Это расскажет вам, как зарегистрировать запрос на уровне HTTP.

Эта ошибка происходит на вашей стороне и NOT на другой стороне. Если другая сторона сбросит соединение, то в сообщении об исключении должно быть указано::

Причина в том, что соединение внутри HttpClient является устаревшим. Проверка устаревшего соединения для SSL не исправляет эту ошибку. Решение: сбросьте ваш клиент и воссоздайте его.

Если вы столкнулись с этим при попытке доступа к веб-службам, развернутым на сервере Glassfish3, вам может потребоваться настроить параметры http-thread-pool. Этот исправленный SocketExceptions у нас был, когда многие параллельные потоки вызывали веб-службу.

  1. Перейдите в консоль администратора
  2. Перейдите к «Configurations»-> «конфигурация сервера» -> «пулы потоков» -> «http-thread-pool».
  3. Изменить настройку «Max Thread Pool Size» с 5 на 32
  4. Изменить настройки «Min Thread Pool Size» от 2 до 16
  5. Перезагрузка Glassfish.

Я тоже наткнулся на эту ошибку. В моем случае проблема заключалась в том, что я использовал JRE6 с поддержкой TLS1.0 . Сервер поддерживал только TLS1.2, поэтому эта ошибка была выброшена.

В моем случае это произошло потому, что мой Tomcat был установлен с недостаточным maxHttpHeaderSize для особенно сложного запроса SOLR.

Надеюсь, это поможет кому-то там!

Я постоянно получаю эту ошибку и считаю ее нормальной.

Это происходит, когда одна сторона пытается читать, когда другая сторона уже повесила трубку. Таким образом, в зависимости от протокола это может указывать или не указывать на проблему . Если мой клиентский код специально указывает серверу, что он собирается повесить трубку, то и клиент, и сервер могут повесить трубку одновременно, и это сообщение не произойдет.

Способ реализации моего кода заключается в том, что клиент просто вешает трубку, не попрощавшись. Затем сервер может поймать ошибку и проигнорировать ее. В контексте HTTP я считаю, что один уровень протокола допускает более одного запроса на соединение, а другой-нет.

Таким образом, вы можете видеть, как потенциально одна сторона может продолжать висеть на другой. Я сомневаюсь, что ошибка, которую вы получаете, имеет какое-либо пиратское отношение, и вы можете просто поймать ее, чтобы она не заполняла ваши файлы журнала.

Эта ошибка возникает на стороне сервера, когда клиент закрыл соединение сокета до того, как ответ может быть возвращен через сокет. В сценарии веб-приложения не все они опасны, так как могут быть созданы вручную. Например, путем выхода из браузера до того, как был получен ответ.

Исключение означает, что сокет был неожиданно закрыт с другой стороны. Поскольку вы вызываете веб-службу, этого не должно произойти — скорее всего, вы отправляете запрос, который вызывает ошибку в веб-службе.

Попробуйте протоколировать весь запрос в этих случаях и посмотреть, не заметите ли вы чего-нибудь необычного. В противном случае свяжитесь с поставщиком веб-услуг и отправьте им свой зарегистрированный проблемный запрос.

Я знаю, что эта нить немного стара, но хотел бы добавить свои 2 цента. У нас была такая же ошибка «connection reset» сразу после нашего одного из релизов.

Основная причина заключалась в том, что наш сервер apache был сбит для deployment. Весь наш сторонний трафик проходит через apache , и мы получали ошибку сброса соединения из-за того, что он был отключен.

Я получал эту ошибку, потому что порт, к которому я пытался подключиться, был закрыт.

Читать еще:  Mtklogger на андроиде что это

Это старая нить, но вчера я столкнулся с java.net.SocketException: Connection reset .

В серверном приложении были изменены настройки регулирования, чтобы разрешить только 1 подключение одновременно! Таким образом, иногда звонки проходили, а иногда нет. Я решил эту проблему, изменив настройки регулирования.

Я получил эту ошибку, когда текстовый файл, который я пытался прочитать, содержал строку, которая соответствовала антивирусной подписи на нашем брандмауэре.

FWIW, я получал эту ошибку, когда случайно делал запрос GET к конечной точке, которая ожидала запроса POST. По-видимому, это был именно тот особый способ обработки проблемы серверами.

Я тоже получал именно эту ошибку: Connection reset by peer . Исключение было вызвано шаблоном Spring REST при запуске метода postForObject() . Для меня проблемой был слишком длинный HTTP URL запрос. Поэтому сначала проверьте, является ли URL произведенным тем, чем он должен быть, и, если ваш сервер действительно должен быть в состоянии обрабатывать запросы такой длины, просто перейдите к конфигурации сервера и увеличьте разрешенную по умолчанию длину URL запросов.

Это решило проблему для меня, но имейте в виду: приложение может не работать в некоторых интернет-браузерах, особенно старых, так как они имеют фиксированную максимальную длину запросов URL.

Надеюсь, это поможет.

Я столкнулся с этой проблемой. Это вызвано заблокированными сеансами в базе данных, которые связаны с таблицами, которые вы собираетесь изменить через Webservice.

Найти заблокированный сеанс IDs:

это должно дать вам подсказки о том, какая таблица заблокирована, но еще не завершила модификацию.

Затем удалите его в v$session :

(Например, 99 .)

Похожие вопросы:

Мы начали получать эту ошибку недавно. работает уже более четырех лет. Что-то изменилось на сайте DEMO? Вызвано: java.net.SocketException вызов.

Как только сценарий входа выполняется с несколькими пользователями, я не вижу проблемы сброса соединения, тогда как, когда то же самое выполняется 100 пользователями, java.net.SocketException.

Я пишу серверное / клиентское приложение для школы. Каждый раз, когда я закрываю клиент, сервер выдает ‘java.net.SocketException: сброс соединения’. Я думаю, что мне нужно закрыть сокет в клиенте.

Кажется, есть некоторая путаница, а также противоречащие утверждения о различных ответах SO: What’s, вызывающих мой java.net.SocketException: сброс соединения? . Вы можете видеть здесь, что.

Возможный Дубликат : Что вызывает сброс соединения java.net.SocketException:? public void sendJobs(String hostname, int port, String username, String password, String folderName.

Когда я отправляю изображение, которое преобразуется в строку и приветственный текст с запросом. сервер долго не отвечает и отвечает мне как java.net.SocketException: recvfrom failed: ECONNRESET.

У меня есть клиент-серверное приложение. На стороне клиента(у меня нет доступа к клиентскому коду) периодически возникает исключение сокета, которое говорит java.net.SocketException: сброс.

Так что это вопрос новичка . При выполнении примера кода из главы работа с URL он выбрасывает: Исключение в потоке main java.net.SocketException: сброс соединения в.

Когда я пытаюсь войти в свое приложение, я получаю сообщение об ошибке Каталог поиска исключений: javax.naming.CommunicationException: простая привязка не удалась: ip address:636 [корневое.

Клиентское приложение было построено с использованием Jdeveloper 10.1.3.2 и работает на сервере OC4J. Это приложение отправляет данные во внешнее серверное приложение. Он работает довольно долгое.

java net socketexception connection reset что делать

79 [2008-09-15 16:36:00]

Я получаю следующую ошибку, пытающуюся прочитать из сокета. Я делаю readInt() в этом InputStream , и я получаю эту ошибку. Прослушивание документации показывает, что клиентская часть соединения закрыла соединение. В этом случае я сервер.

У меня есть доступ к файлам журнала клиента, и он не закрывает соединение, и на самом деле его файлы журнала предполагают, что я закрываю соединение. Так кто-нибудь есть идея, почему это происходит? Что еще проверить? Это происходит, когда есть локальные ресурсы, которые, возможно, достигают пороговых значений?

Я отмечаю, что у меня есть следующая строка:

непосредственно перед readInt() . Есть причина для этого (длинный рассказ), но просто любопытно, существуют ли обстоятельства, при которых это может привести к указанной ошибке? У меня есть сервер, работающий в моей среде IDE, и мне пришлось оставить свою среду IDE на точке останова, и я заметил, что те же самые ошибки появляются в моих собственных журналах в моей среде IDE.

В любом случае, просто упомянув об этом, надеюсь, не красная сельдь.: — (

java networking sockets connection socketexception

79 EJP [2010-11-29 07:11:00]

Существует несколько возможных причин.

На другом конце умышленно reset соединение, таким образом, что я не буду документировать здесь. Редко и, как правило, неверно, для прикладного программного обеспечения это делать, но это не известно для коммерческого программного обеспечения.

Чаще всего это вызвано записью на соединение, что другой конец уже закрыт нормально. Другими словами, ошибка протокола приложения.

Это также может быть вызвано закрытием сокета, когда в буфере приема сокета есть непрочитанные данные.

В Windows «программное обеспечение вызвало прерывание соединения», которое не совпадает с «соединением reset», вызвано сбоем сетевых проблем с вашего конца. Здесь есть статья базы знаний Microsoft.

29 erickson [2008-09-15 17:03:00]

Соединение reset просто означает, что был получен TCP RST. Это происходит, когда ваш партнер получает данные, которые он не может обработать, и для этого могут быть разные причины.

Простейшим является закрытие сокета, а затем запись большего количества данных в выходной поток. Закрыв сокет, вы сказали своему коллеге, что вы закончили говорить, и он может забыть о вашем соединении. Когда вы все равно отправляете больше данных об этом потоке, эксперт отвергает его с помощью RST, чтобы вы знали, что он не прослушивает.

В других случаях промежуточный брандмауэр или даже сам удаленный хост могут «забыть» о вашем TCP-соединении. Это может произойти, если вы не отправляете какие-либо данные в течение длительного времени (2 часа — общий тайм-аут), или потому, что сверстник перезагружен и потерял информацию об активных соединениях. Отправка данных по одному из этих несовместимых соединений вызовет также RST.

Обновление в ответ на дополнительную информацию:

Посмотрите внимательно на обработку SocketTimeoutException . Это исключение возникает, если превышен установленный тайм-аут при блокировке операции сокета. Состояние самого сокета не изменяется при вызове этого исключения, но если ваш обработчик исключений закрывает сокет, а затем пытается его записать, вы будете в состоянии соединения reset. setSoTimeout() призван дать вам чистый способ выйти из операции read() , которая в противном случае могла бы блокироваться навсегда, без каких-либо грязных действий, таких как закрытие сокета из другого потока.

7 GEOCHET [2008-09-15 16:45:00]

Всякий раз, когда у меня были такие странные проблемы, я обычно сажусь с помощью инструмента WireShark и смотрю на переданные необработанные данные назад и вперед. Вы можете быть удивлены, когда что-то отключается, и вы только уведомляетесь, когда пытаетесь прочитать.

5 Scott S [2013-07-23 20:10:00]

Смутившись сказать это, но когда у меня возникла эта проблема, было просто ошибкой, что я закрывал соединение, прежде чем я прочитал все данные. В случаях, когда возвращались маленькие строки, это сработало, но, вероятно, из-за того, что весь ответ был буферизирован, я не закрыл его.

В случае большего количества возвращаемого текста исключение было выбрано, так как больше возвращался буфер.

Вы можете проверить этот контроль. Помните, что открытие URL-адреса похоже на файл, обязательно закройте его (отпустите соединение) после его полного чтения.

Вы должны тщательно осмотреть весь след,

У меня есть приложение для подключения к серверу и исправлено событие java.net.SocketException: Connection reset .

В моем случае это происходит при чтении с объекта clientSocket Socket , который по какой-то причине закрывает его соединение. (Потеря сети, брандмауэр или сбой приложения или предполагаемое закрытие)

На самом деле я восстанавливал соединение, когда получал ошибку при чтении с этого объекта Socket.

Интересно, что for my JAVA Socket , если клиент подключается к моему ServerSocket и закрывает его соединение, не отправляя ничего is.read() вызывает себя рекурсивно. Кажется, из-за того, что в бесконечном цикле для чтения из этого сокета вы пытаетесь для чтения из закрытого соединения. Если вы используете что-то вроде операции чтения,

Затем вы получаете stackTrace, как показано ниже, и

То, что я сделал, — это просто закрыть ServerSocket и обновить мое соединение и ждать дальнейших входящих клиентских подключений.

Это восстанавливает мое соединение для неизвестного потерянного сокета клиента

Я не мог найти другого способа, потому что, как вы видите ниже, вы не можете понять, потеряно ли соединение или нет без try and catch , потому что все кажется правильным. Я получил этот снимок, пока я непрерывно получал Connection reset .

3 kml_ckr [2011-03-27 23:30:00]

У меня была такая же ошибка. Я нашел решение проблемы сейчас. Проблема заключалась в том, что клиентская программа заканчивалась до того, как сервер прочитал потоки.

2 Pino [2015-05-08 15:24:00]

У меня была эта проблема с системой SOA, написанной на Java. Я работал как с клиентом, так и с сервером на разных физических машинах, и они отлично работали в течение длительного времени, затем эти неприятные сбрасывания соединений появились в журнале клиентов, и в журнале сервера не было ничего странного. Перезапуск клиента и сервера не помогло решить проблему. Наконец, мы обнаружили, что куча на стороне сервера была довольно полной, поэтому мы увеличили доступную память для JVM: проблема решена! Обратите внимание, что в журнале не было OutOfMemoryError: память была просто скудной, а не исчерпанной.

I am getting the following error trying to read from a socket. I’m doing a readInt() on that InputStream , and I am getting this error. Perusing the documentation this suggests that the client part of the connection closed the connection. In this scenario, I am the server.

I have access to the client log files and it is not closing the connection, and in fact its log files suggest I am closing the connection. So does anybody have an idea why this is happening? What else to check for? Does this arise when there are local resources that are perhaps reaching thresholds?

I do note that I have the following line:

just prior to the readInt() . There is a reason for this (long story), but just curious, are there circumstances under which this might lead to the indicated error? I have the server running in my IDE, and I happened to leave my IDE stuck on a breakpoint, and I then noticed the exact same errors begin appearing in my own logs in my IDE.

Anyway, just mentioning it, hopefully not a red herring.

9 Answers 9

There are several possible causes.

The other end has deliberately reset the connection, in a way which I will not document here. It is rare, and generally incorrect, for application software to do this, but it is not unknown for commercial software.

Читать еще:  Lenovo launcher не отвечает что делать

More commonly, it is caused by writing to a connection that the other end has already closed normally. In other words an application protocol error.

It can also be caused by closing a socket when there is unread data in the socket receive buffer.

In Windows, ‘software caused connection abort’, which is not the same as ‘connection reset’, is caused by network problems sending from your end. There’s a Microsoft knowledge base article about this.

Connection reset simply means that a TCP RST was received. This happens when your peer receives data that it can’t process, and there can be various reasons for that.

The simplest is when you close the socket, and then write more data on the output stream. By closing the socket, you told your peer that you are done talking, and it can forget about your connection. When you send more data on that stream anyway, the peer rejects it with an RST to let you know it isn’t listening.

In other cases, an intervening firewall or even the remote host itself might «forget» about your TCP connection. This could happen if you don’t send any data for a long time (2 hours is a common time-out), or because the peer was rebooted and lost its information about active connections. Sending data on one of these defunct connections will cause a RST too.

Update in response to additional information:

Take a close look at your handling of the SocketTimeoutException . This exception is raised if the configured timeout is exceeded while blocked on a socket operation. The state of the socket itself is not changed when this exception is thrown, but if your exception handler closes the socket, and then tries to write to it, you’ll be in a connection reset condition. setSoTimeout() is meant to give you a clean way to break out of a read() operation that might otherwise block forever, without doing dirty things like closing the socket from another thread.

Здравствуйте Администратор у меня проблема с лаунчером сервера индастриал выдают ошибку internal exception java.net.socketexception connection reset.

@SEKSMASHINANASHEGOVREMENI
Я же написал тебе в личку, алло.
Окей, напишу ещё раз.

Полностью удали Java. Пуск>Панель Управления>Программы и компоненты>Java>[Удали её нажав ПКМ]

Зайди на сайт — https://www.java.com/ru/download/ и кликни «Загрузить Java»
Можно удалить все файлы игры %appdata%>.mix-servers — удалить.

После этого ты обновил Java до последней версии и теперь можешь скачать лаунчер заного.

Что вызывает мой java.net.SocketException: Connection reset? — java

Мы наблюдаем частые, но периодические java.net.SocketException: Connection reset ошибки java.net.SocketException: Connection reset в наших журналах. Мы не уверены в том, откуда на самом деле происходит ошибка Connection reset и как отлаживать.

Эта проблема не связана с сообщениями, которые мы пытаемся отправить.

Любые предложения о том, какие типичные причины этого исключения могут быть, и как мы можем действовать?

Вот com.companyname.mtix.sms трассировка стека ( com.companyname.mtix.sms — наш компонент):

Наш компонент — это веб-приложение, работающее под управлением Tomcat, которое вызывает стороннюю веб-службу, которая отправляет SMS-сообщения. Строка нашего кода, из которой генерируется исключение, является последней строкой во фрагменте кода ниже.

  • 3
  • 15
  • 12 окт 2019 2019-10-12 05:40:42
  • Richard Everett

15 ответов

Я столкнулся с этой проблемой. Это вызвано заблокированными сеансами в базе данных, которые связаны с таблицами, которые вы собираетесь изменять через Webservice.

Найти заблокированные идентификаторы сеанса:

это должно дать вам подсказки о том, какая таблица заблокирована, но еще не завершила модификацию.

Затем удалите его в v$session :

(99).

  • 12 окт 2019 2019-10-12 05:40:46
  • Bruce Yo

Я получил эту ошибку, когда текстовый файл, который я пытался прочитать, содержал строку, которая соответствовала сигнатуре антивируса на нашем брандмауэре.

  • 12 окт 2019 2019-10-12 05:40:46
  • Noumenon

FWIW, я получал эту ошибку, когда я случайно делал запрос GET к конечной точке, которая ожидала запрос POST. Предположительно, это был именно тот конкретный серверный способ решения проблемы.

  • 12 окт 2019 2019-10-12 05:40:45
  • RTF

Я тоже получал именно эту ошибку: Connection reset by peer . Исключение составляло Spring шаблон REST при запуске метода postForObject() . Для меня проблема была слишком длинной HTTP-URL-запросом. Поэтому сначала проверьте, является ли созданный URL таким, каким он должен быть, и если ваш сервер действительно должен обрабатывать запросы этой длины, просто перейдите к настройке сервера и увеличьте допустимую длину URL-запросов по умолчанию.

Это решило проблему для меня, но имейте в виду: приложение может не работать в некоторых интернет-браузерах, особенно старых, поскольку они фиксировали максимальную длину URL-запросов.

Надеюсь, что это поможет.

  • 12 окт 2019 2019-10-12 05:40:45
  • Roquen

Я знаю, что эта ветка немного старая, но хотелось бы добавить мои 2 цента. У нас была такая же «связь reset» сразу после нашего одного из выпусков.

Основная причина: наш сервер apache был отключен для развертывания. Весь наш сторонний трафик проходит через apache , и мы получаем сообщение об ошибке reset из-за его отсутствия.

  • 12 окт 2019 2019-10-12 05:40:45
  • Nirmal Mangal

Я получал эту ошибку, потому что порт, к которому я пытался подключиться, был закрыт.

  • 12 окт 2019 2019-10-12 05:40:45
  • Displee

Это старый поток, но я столкнулся с java.net.SocketException: Connection reset вчера.

Серверное приложение изменило свои настройки регулирования, чтобы разрешить только 1 соединение одновременно! Таким образом, иногда звонки проходили, а иногда нет. Я решил проблему, изменив настройки дросселирования.

  • 12 окт 2019 2019-10-12 05:40:44
  • S Jade

Исключение означает, что сокет неожиданно закрыт с другой стороны. Поскольку вы вызываете веб-службу, это не должно происходить — скорее всего, вы отправляете запрос, который вызывает ошибку в веб-службе.

Попробуйте выполнить регистрацию всего запроса в этих случаях и посмотрите, не заметили ли вы что-то необычное. В противном случае обратитесь к поставщику веб-сервисов и отправьте им запрошенный логический запрос.

  • 12 окт 2019 2019-10-12 05:40:44
  • Michael Borgwardt

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

  • 12 окт 2019 2019-10-12 05:40:44
  • Paul

Я получаю эту ошибку все время и считаю ее нормальной.

Это происходит, когда одна сторона пытается прочитать, когда другая сторона уже повесила трубку. Таким образом, в зависимости от протокола это может или не может обозначить проблему. Если мой клиентский код указывает серверу, что он собирается повесить трубку, тогда клиент и сервер могут повесить трубку одновременно, и это сообщение не произойдет.

То, как я реализую свой код, — это клиенту просто повесить трубку, не попрощавшись. Затем сервер может поймать ошибку и проигнорировать ее. В контексте HTTP я считаю, что один уровень протокола позволяет более одного запроса на одно соединение, а другое — нет.

Таким образом, вы можете видеть, как потенциально одна сторона может повесить друг друга. Я сомневаюсь, что ошибка, которую вы получаете, связана с любой пиратской проблемой, и вы можете просто поймать ее, чтобы она не заполнила ваши файлы журналов.

  • 12 окт 2019 2019-10-12 05:40:44
  • Gorge

В моем случае это было связано с тем, что мой Tomcat был установлен с недостаточным maxHttpHeaderSize для особо сложного запроса SOLR.

Надеюсь, это поможет кому-то там!

  • 12 окт 2019 2019-10-12 05:40:43
  • inanutshellus

Я тоже наткнулся на эту ошибку. В моем случае проблема заключалась в использовании JRE6 с поддержкой TLS1.0. Сервер поддерживал только TLS1.2, поэтому эта ошибка была выбрана.

  • 12 окт 2019 2019-10-12 05:40:43
  • Jacob van Lingen

Если вы пытаетесь получить доступ к веб-службам, развернутым на сервере Glassfish3, вам может понадобиться настроить настройки вашего пула HTTP-потоков. Это фиксированные SocketExceptions, которые мы имели, когда многие параллельные потоки вызывали веб-службу.

  • Перейти в консоль администратора
  • Перейдите к «Конфигурации» → «Конфигурация сервера» → «Пулы потоков» → «http-thread-pool».
  • Изменить настройку «Максимальный размер пула потоков» от 5 до 32
  • Измените настройку «Минимальный размер пула потоков» от 2 до 16.
  • Перезапустить Glassfish.
  • 12 окт 2019 2019-10-12 05:40:43
  • PålOliver

Эта ошибка происходит на вашей стороне, а НЕ с другой стороны. Если другая сторона reset подключена, то сообщение об исключении должно указывать:

Причина заключается в том, что соединение внутри HttpClient устарело. Проверка устаревшего соединения для SSL не устраняет эту ошибку. Решение: сбросьте свой клиент и заново создайте.

  • 12 окт 2019 2019-10-12 05:40:43
  • [email protected]

В javadoc для SocketException указано, что он

Брошено, чтобы указать, что в базовом протоколе есть ошибка, такая как ошибка TCP

В вашем случае кажется, что соединение было закрыто серверным концом соединения. Это может быть проблемой с запросом, который вы отправляете, или проблемой в конце.

Чтобы помочь отладки, вы можете посмотреть, как использовать Wireshark, чтобы просмотреть фактические сетевые пакеты. Кроме того, есть альтернативный клиент для вашего Java-кода, который вы могли бы использовать для тестирования веб-сервиса? Если это было успешно, это может указывать на ошибку в коде Java.

Как вы используете Commons HTTP Client, просмотрите Общее руководство по протоколу HTTP-клиентов. Это покажет вам, как регистрировать запрос на уровне HTTP.

Java net socketexception connection reset что делать

786117 просмотра

14 ответа

33828 Репутация автора

На этот вопрос уже есть ответ здесь:

Мы видим частые, но периодически java.net.SocketException: Connection reset возникающие ошибки в наших журналах. Мы не уверены в том, откуда на Connection reset самом деле происходит ошибка и как отладить ее.

Эта проблема, по-видимому, не связана с сообщениями, которые мы пытаемся отправить. Обратите внимание, что сообщение не является connection reset by peer .

Любые предложения о том, какие типичные причины этого исключения могут быть, и как мы можем действовать?

Вот типичная трассировка стека ( com.companyname.mtix.sms это наш компонент):

Наш компонент — это веб-приложение, работающее под управлением Tomcat, которое вызывает стороннюю веб-службу, которая отправляет SMS-сообщения. Строка нашего кода, из которой генерируется исключение, является последней строкой во фрагменте кода ниже.

3 плюса

302031 Репутация автора

Исключение означает, что сокет был неожиданно закрыт с другой стороны. Поскольку вы вызываете веб-сервис, этого не должно происходить — скорее всего, вы отправляете запрос, который вызывает ошибку в веб-сервисе.

Попробуйте зарегистрировать весь запрос в этих случаях и посмотрите, заметите ли вы что-нибудь необычное. В противном случае свяжитесь с поставщиком веб-услуг и отправьте им зарегистрированный проблемный запрос.

Читать еще:  Fast bios mode что это в биосе

63 плюса

24561 Репутация автора

Javadoc для SocketException утверждает, что это

Брошенный, чтобы указать, что есть ошибка в базовом протоколе, таком как ошибка TCP

В вашем случае кажется, что соединение было закрыто серверным концом соединения. Это может быть проблема с отправляемым вами запросом или проблема с его окончанием.

Для облегчения отладки вы можете использовать инструмент, например Wireshark, для просмотра реальных сетевых пакетов. Кроме того, есть ли альтернативный клиент к вашему коду Java, который вы могли бы использовать для тестирования веб-службы? Если это успешно, это может указывать на ошибку в коде Java.

Поскольку вы используете Commons HTTP Client, взгляните на Common Log Client Guide Logging . Это скажет вам, как зарегистрировать запрос на уровне HTTP.

Автор: Mark Размещён: 25.02.2009 11:30

4 плюса

194 Репутация автора

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

Автор: Paul Размещён: 25.02.2009 11:35

39 плюса

Репутация автора

Эта ошибка происходит на вашей стороне, а не на другой стороне. Если другая сторона сбросила соединение, то сообщение об исключении должно сказать:

Причина в том, что соединение внутри HttpClient устарело. Проверка устаревшего соединения для SSL не устраняет эту ошибку. Решение: сбросьте ваш клиент и воссоздайте.

5 плюса

59 Репутация автора

Я все время получаю эту ошибку и считаю ее нормальной.

Это происходит, когда одна сторона пытается прочитать, когда другая сторона уже положила трубку. Таким образом, в зависимости от протокола это может обозначать или не обозначать проблему . Если мой клиентский код специально указывает серверу, что он собирается повесить трубку, то и клиент, и сервер могут повесить трубку одновременно, и это сообщение не произойдет.

Я реализую свой код так, чтобы клиент просто повесил трубку, не попрощавшись. Затем сервер может перехватить ошибку и проигнорировать ее. Я полагаю, что в контексте HTTP один уровень протокола допускает более одного запроса на соединение, а другой — нет.

Таким образом, вы можете увидеть, как потенциально одна сторона может продолжать зависать на другой. Я сомневаюсь, что полученная вами ошибка имеет какое-либо пиратское значение, и вы можете просто ее перехватить, чтобы она не заполняла ваши файлы журналов.

Автор: Gorge Размещён: 27.06.2010 10:36

-1 плюса

43 Репутация автора

Я получаю именно эту ошибку тоже: Connection reset by peer . Исключение было вызвано шаблоном REST Spring при запуске postForObject() метода. Для меня проблема была в слишком длинном HTTP URL-запросе. Поэтому сначала проверьте, соответствует ли полученный URL-адрес тому, каким он должен быть, и, если ваш сервер действительно должен обрабатывать запросы такой длины, просто перейдите к конфигурации сервера и увеличьте допустимую длину URL-запросов по умолчанию.

Это решило проблему для меня, но имейте в виду: приложение может не работать в некоторых интернет-браузерах, особенно старых, так как они установили максимальную длину URL-запросов.

Автор: Roquen Размещён: 28.09.2011 02:40

16 плюса

1838 Репутация автора

Если вы испытываете это при попытке получить доступ к веб-службам, развернутым на сервере Glassfish3, вы можете настроить параметры пула http-thread. Это исправило исключения SocketException, которые были у нас, когда многие параллельные потоки вызывали веб-сервис.

  1. Перейти в консоль администратора
  2. Перейдите к «Конфигурациям» -> «Конфигурация сервера» -> «Пулы потоков» -> «http-thread-pool».
  3. Измените настройку «Максимальный размер пула потоков» с 5 на 32
  4. Измените настройку «Минимальный размер пула потоков» с 2 на 16
  5. Перезагрузите Glassfish.

Автор: PålOliver Размещён: 21.10.2011 10:41

7 плюса

5825 Репутация автора

В моем случае это произошло из-за того, что для моего Tomcat был установлен недостаточно maxHttpHeaderSize сложный запрос SOLR.

Надеюсь, это поможет кому-то там!

10 плюса

4882 Репутация автора

Я тоже наткнулся на эту ошибку. В моем случае проблема заключалась в том, что я использовал JRE6 с поддержкой TLS1.0 . Сервер поддерживает только TLS1.2, поэтому была выдана эта ошибка.

1 плюс

562 Репутация автора

Я знаю, что эта тема немного старая, но хотел бы добавить свои 2 цента. У нас была та же самая ошибка «сброса соединения» сразу после нашего одного из выпусков.

Основной причиной было то, что наш apache сервер был отключен для развертывания. Весь наш сторонний трафик проходит через, apache и мы получили ошибку сброса соединения из-за его сбоя.

плюса

2216 Репутация автора

Я получил эту ошибку, когда текстовый файл, который я пытался прочитать, содержал строку, соответствующую сигнатуре антивируса на нашем брандмауэре.

1 плюс

738 Репутация автора

Это старая ветка, но я столкнулся java.net.SocketException: Connection reset вчера.

Серверное приложение изменило свои настройки регулирования, чтобы разрешить только 1 соединение одновременно! Таким образом, иногда звонки проходили, а иногда нет. Я решил проблему, изменив настройки дросселирования.

плюса

3191 Репутация автора

FWIW, я получал эту ошибку, когда я случайно делал запрос GET к конечной точке, которая ожидала запрос POST. Предположительно, это был именно тот конкретный серверный способ решения проблемы.

Автор: RTF Размещён: 12.10.2018 09:04

плюса

305 Репутация автора

Я получал эту ошибку, потому что порт, к которому я пытался подключиться, был закрыт.

JBossDeveloper

java.net.SocketException: Connection reset

I hope someone can help me to understand following problem. We use JBoss 4.2.3 with JBoss Remoting 2.2.2.SP8 and JDK 1.6.0.07. We use Linux on the server side and Windows on the client side. We have a Swing client which connects to JBoss and invokes methods on stateless session beans. We use EJB3 stateless session beans. From time to time our users get following exception:

Our configuration of the DefaultEjb3Connector looks like this:

The client has following jars in its classpath:

ejb3-persistence.jar
hibernate-annotations.jar
hibernate-client.jar
jnp-client.jar
jboss-common-client.jar
jbosssx-client.jar
jboss-ejb3-client.jar
jboss-aop-jdk50-client.jar
jboss-aspect-jdk50-client.jar
jboss-remoting.jar
jboss-serialization.jar
jboss-transaction-client.jar
concurrent.jar
jboss-j2ee.jar
jbossmq-client.jar
jboss-ejb3x.jar

We get this exception also with the default configuration of DefaultEjb3Connector. If the user retries his last action everything seems to work again. But as I said from time to time this exception occurs and we just don’t know what may be the cause for this problem. We tested the configuration of our routers and firewalls and everything is properly configured and work as expected. The problem occurs only with our client which connects to JBoss. All other applications work without problems.

I hope some of you may explain, what may cause this exception.

Thanks in advance and best regards,
Andrej

  • 13621 Просмотры
  • Метки: нет (добавить)
1. Re: java.net.SocketException: Connection reset

When the exception is thrown, Remoting has just created a new socket and is trying to create an ObjectInputStream, the constructor for which tries to read a stream header. While it’s waiting on the stream header, it is informed that the server has closed the socket, as indicated by «java.net.SocketException: Connection reset».

The question is, then, what is going on at the server? One possibility, if the server is very busy, is that all of the worker threads are in use and the server tries to interrupt one to reuse it. If that’s the case, then increasing the size of the worker thread pool might alleviate the problem. In fact, I see you have already increased it from the default size (300) to 400. Did that reduce the frequency of the exception?

It would be very useful to see what’s going on at the server by setting the log level for Remoting to TRACE. You can do that by adding

By the way, I see that you’ve also added

to the EJB3 Connector configuration. If you did that to try to solve this problem, it was a good guess but not relevant to the problem I see in the stacktrace. Setting «socket.check_connection» to «true» will enable an extra round trip communication when the Remoting client tries to reuse a connection from the connection pool. But the problem in the stacktrace occurs when a new connection is being created. If that’s the only reason for enabling connection checking, you might want to take it out, since it will introduce extra latency and network traffic.

Let me know what happens with the server log.

  • Мне нравится (0)
  • Действия
2. Re: java.net.SocketException: Connection reset

thanks for your quick answer.

The question is, then, what is going on at the server? One possibility, if the server is very busy, is that all of the worker threads are in use and the server tries to interrupt one to reuse it. If that’s the case, then increasing the size of the worker thread pool might alleviate the problem. In fact, I see you have already increased it from the default size (300) to 400. Did that reduce the frequency of the exception?

No, it did not reduced the frequency of the exception.

It would be very useful to see what’s going on at the server by setting the log level for Remoting to TRACE.

We have already enabled tracing. But we were not able to find the cause for this problem by analyzing the log file. Maybe you will see something. Here is an excerpt from the log file (I’m sorry for the long post. I was not able to figure out how to attach a file to the message.):

  • Мне нравится (0)
  • Действия
3. Re: java.net.SocketException: Connection reset

Upps, it was not the full reply.

Two user got this exception at 16:40:47. Small implementation detail: We use in our application Hibernate Search. When an user types something in a search field, we start searching in a background thread. When the user continues to type in the search field, we start another thread and interrupt the first one when it is not finished. Hence the client may invoke one and the same method of a session bean multiple times in a minute. But the exception occurs not only on search. It occurs also when invoking other methods.

.
If that’s the only reason for enabling connection checking, you might want to take it out, since it will introduce extra latency and network traffic.

Yes, this was our guess. Thanks for the tip. We will take it out.

Thanks in advance and best regards,
Andrej

Ссылка на основную публикацию
Adblock
detector