Я запускаю JSP на Oracle 11g, Weblogic 10.3.4. У меня установлено 2 управляемых сервера и сервер администратора Oracle.
Я сталкиваюсь с ошибкой, когда периодически в лог-файле 2 управляемых сервера и админ-сервера появляется java.net.SocketException: Software caused connection abort: socket write error. Приложение может работать 2 дня без появления этой ошибки или она может появляться несколько раз за день. Нагрузка на сервер одинаковая каждый день.
Когда возникает эта ошибка, сервер просто перестает принимать соединения и не может получить доступ к приложению. Даже если я попытаюсь получить доступ к приложению через localhost, я не смогу получить доступ к JSP-страницам и будет показан статус 503 http, но затем я смогу получить доступ к статической HTML-странице. Я не смогу получить доступ к странице консоли администратора Oracle 11g Weblogic. Когда я смотрю на журнал сервера администратора, он показывает, что управляемые серверы отключены от сервера администратора и наоборот.
Волшебным образом приложение может восстановиться самостоятельно, и приложение снова может получить доступ, или мне нужно перезапустить сервер, так как перезапуск службы приложения не работает.
FTP-соединения, к которым подключено приложение, также закрыты.
Я могу выполнить ping и telnet к порту сервера. Журнал событий, похоже, не оставляет никакой информации. Мы запустили wireshark, чтобы посмотреть трафик пакетов, и кажется, что порт приложения отправляет пакеты RST, ACK на балансировщик нагрузки.
Любая помощь будет высоко оценена. Если вам понадобится дополнительная информация, не стесняйтесь спрашивать меня.
A-000000> <[Error] GetPageContentTag: pageContext flush error, exception in doEndTag {java.net.SocketException: Программное обеспечение вызвало прерывание соединения: ошибка записи сокета}>
На стороне сервера есть что-то, что создает плохую связь между сокетами, и это может проявляться периодически, потому что время от времени его следует вызывать, но давайте не будем ничего предполагать и устранять неполадки вместо этого.
Удалите весь пользовательский код из 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 (только если вы можете поиграть с ней в выходные или в нерабочее время ), так что будьте осторожны.