Я использую 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 (только если вы можете поиграть с ней в выходные или в нерабочее время), поэтому будьте осторожны.