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

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

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

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

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

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

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

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

Трассировка исключений

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

2 ответа

На этот вопрос ответ на StackOverflow здесь.

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

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

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

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

Более подробная информация здесь: http://www.eclipsezone.com/eclipse/forums/t53459.html

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

Другие вопросы по тегам