Вообщем переодически сервер дохнет по: The WebLogic Server encountered a critical failure java.lang.OutOfMemoryError: Metaspace Reason: There is a panic condition in the server. The server is configured to exit on panic И хотя это гавно пишет типа Reason: There is a panic condition in the server. The server is configured to exit on panic чёт ни хуя он ни куда не exit.... Вообщем т.к разбираться с тем чем он жрётся нет ни времени ни желания (оно обязательно появится)... как вариант можно приделать костыль... костыль будет заключаться в ребуте сервера при возникновении этой ошибки. Что значит для этого надо... Желания и понимание что так жить нельзя, и вообще... Делаем новый модуль называем скажем: Reboot-OOMMetaSpace Идём в в новый модуль делаем Policy: Называем его OOM-Metaspace и говорит что это Server log: Жмём next в Configuration Policy пишем: log.logMessage.contains('java.lang.OutOfMemoryError: Metaspace'...
Вообщем переодически сервер дохнет по:
The WebLogic Server encountered a critical failure
java.lang.OutOfMemoryError: Metaspace
Reason: There is a panic condition in the server. The server is configured to exit on panic
И хотя это гавно пишет типа
Reason: There is a panic condition in the server. The server is configured to exit on panic
чёт ни хуя он ни куда не exit....
Вообщем т.к разбираться с тем чем он жрётся нет ни времени ни желания (оно обязательно появится)... как вариант можно приделать костыль... костыль будет заключаться в ребуте сервера при возникновении этой ошибки.
Что значит для этого надо...
Желания и понимание что так жить нельзя, и вообще...
Делаем новый модуль называем скажем: Reboot-OOMMetaSpace
Идём в в новый модуль делаем Policy:
Называем его OOM-Metaspace и говорит что это Server log:
Жмём next в Configuration Policy пишем:
log.logMessage.contains('java.lang.OutOfMemoryError: Metaspace')
Не надо алярмов:
Next -> Finish
Делаем терь действие:
Добавляем скрипт:
Пишем чё нить типа RebootMS
Далее
mkdir /opt/oracle/user_projects/domains/test_domain/bin/scripts/
Working Directory: /opt/oracle/user_projects/domains/test_domain/bin/scripts
Path to Script:/opt/oracle/user_projects/domains/test_domain/bin/scripts/reboot.sh
Finish.
Возвращаемся обратно в Policy которое OOM-Metaspace и добавляем созданное действие:
Дальше у нас есть скрипт который срёт в /tmp/test.log тем что он наделал.
reboot.sh:
reboot.sh:
#!/bin/bash
echo "-------------`date`------------" >> /tmp/test.log
SERVER_NAME=`awk -v 'RS=\0' -F= '$1=="SERVER_NAME" {print $2}' /proc/$PPID/environ`
echo "PID: $$, PPID: $PPID, SERVER: ${SERVER_NAME}" >> /tmp/test.log
sleep 5
nohup /opt/oracle/mid/weblogic/restartMServer.sh $SERVER_NAME 1>/dev/null 2>&1 &
exit 0
В краце делает примерно следующее получает имя Managed Server на которым был OOM:
SERVER_NAME=`awk -v 'RS=\0' -F= '$1=="SERVER_NAME" {print $2}' /proc/$PPID/environ`
Выводит это в /tmp/test.log
echo "PID: $$, PPID: $PPID, SERVER: ${SERVER_NAME}"
Запускает скрипт по ребуту managed Server
nohup /opt/oracle/mid/weblogic/restartMServer.sh $SERVER_NAME 1>/dev/null 2>&1 &
Скрипт restartMServer.sh:
#!/bin/bash
$MW_HOME/oracle_common/common/bin/wlst.sh<<EOF
nmConnect('weblogic','TEST','10.64.999.999',5556,'test_domain','/opt/oracle/user_projects/domains/test_domain',nmType='Plain');
nmKill('$1');
nmStart('$1');
EOF
exit 0
-------------------------------------------------
В качесте примера можно найти приложение по генерации StuckThread и в правилах прописать что нить типа:
log.messageId == 'BEA-000337' and log.logMessage.contains('STUCK')
и посмотреть что на StuckThread сервер ребутнётся.
Там кстать надо LogLevel повысить что бы подобные соощения попадали в лог...
Опубликую пожалуй ито вдруг пригодится
Комментарии
Отправить комментарий