Назад | Перейти на главную страницу

Вызвано: java.net.SocketException: программное обеспечение вызвало прерывание соединения: ошибка записи сокета

Я использую JSP на Oracle 11g, Weblogic 10.3.4. У меня установлено 2 управляемых сервера и сервер администратора Oracle.

Я сталкиваюсь с ошибкой, при которой периодически отображается файл журнала 2 управляемых серверов и административного сервера. java.net.SocketException: программное обеспечение вызвало прерывание соединения: ошибка записи сокета. Приложение может работать в течение 2 дней без появления этой ошибки или может появляться несколько раз в день. Нагрузка на сервер одинакова всегда.

При обнаружении этой ошибки сервер просто перестанет принимать соединения и не сможет получить доступ к приложению. Даже если я попытаюсь получить доступ к приложению через localhost, я не смогу получить доступ к страницам JSP, и отображается статус 503 http, но тогда я могу получить доступ к статической HTML-странице. Я не смогу получить доступ к странице консоли администратора Oracle 11g Weblogic. Когда я смотрю журнал сервера администратора, он показывает, что управляемые серверы отключены от сервера администратора и наоборот.

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

FTP-соединения, к которым подключено приложение, также закрываются.

Я могу пинговать telnet на порт сервера. Журнал событий не оставляет никакой информации. Мы запустили wirehark, чтобы увидеть пакетный трафик, и кажется, что порт приложения отправляет пакет RST, ACK на балансировщик нагрузки.

Любая помощь будет принята с благодарностью. Если вам понадобится дополнительная информация, не стесняйтесь спрашивать меня.

Исключительная трассировка

A-000000> <[Error] GetPageContentTag: ошибка сброса pageContext, исключение в doEndTag {java.net.SocketException: программное обеспечение вызвало прерывание соединения: ошибка записи сокета}>

На этот вопрос ответят на StackOverflow Вот.

В основном это указывает на проблему с сетью.

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

Удалите весь пользовательский код из Weblogic, посмотрите, сохраняется ли проблема, если нет, то вам не нужны никакие пакеты обновления Weblogic. Ваш следующий шаг - собрать весь настраиваемый код, поместить его в вашу Eclipse IDE, поместить несколько точек останова в подозрительные места (поиск любых фрагментов кода, которые создают сокеты или вызывают API-интерфейсы, которые могут это сделать) и настроить аргументы JVM вашего управляемого сервера ( Environment> Server> YourManagedServer> вкладка 'Remote Start') следующим образом: -Xdebug -Xrunjdwp: transport = dt_socket, address = 1044, server = y, suspend = n

Теперь запустите свой Weblogic AdminServer и дождитесь, пока проблема не проявит себя, он должен открыть интерфейс DEBUG в Eclipse. Удачной отладки :)

Подробнее здесь: http://www.eclipsezone.com/eclipse/forums/t53459.html

* Очевидно, что вы не делаете этого в своей среде PROD (только если вы можете поиграть с ней в выходные или в нерабочее время), поэтому будьте осторожны.