Вообщем переодически сервер дохнет по: 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'...
Вообщем в краце идея вытащить список серверов из config.xml подручными средствами...
Писать всякое гавно на **** языках, чёт было лень поэтому я решил воспользоваться средствами linux=)
Для работы необходим xmllint и xml_grep
т.е пакеты:
libxml2-2.7.6-4.0.1.el6_2.4.x86_64
perl-XML-Twig-3.34-1.el6.noarch
соответственно.
1. Получаем собственно сам список серверов (файл config.xml находится в $DOMAIN_HOME/config/ )
[oracle@ ~]$ xml_grep /domain/server/name config.xml > servers.xml
<?xml version="1.0" ?>
<xml_grep version="0.7" date="Tue Oct 28 10:42:00 2014">
<file filename="config.xml">
<name>AdminServer</name>
<name>tst_1</name>
</file>
</xml_grep>
[oracle@ ~]$ echo "cat //name/text()" | xmllint --nocdata --shell servers.xml | sed '1d;$d;/-/d'|sed ':a;N;$!ba;s/\n/ /g'
AdminServer tst_1
Осталось подумать как это засунуть в одну строку и было бы вообще супер.
Update: Придумал
xml_grep /domain/server/name $DOMAIN_HOME/config/config.xml --text_only|sed ':a;N;$!ba;s/\n/ /g'
!!!
P.S хер его знает но при наличии namespace`ов обойтись просто xmllint не получилось... тем более что эта сука ни как не хотела жрать xpath.
т.е пишет:
xmllint unknown option '--xpath'
Ответ тута такой: Updating
Проверил OEL 6.4 почему то:
libxml2.x86_64 2.7.6-17.0.1.el6_6.1 ol6_latest
Время идёт а прогресс стоит.... хотя если заморочится то тут можно найти аж 2.9.1, правда в не оф репозиториях.
P.S всё оказалось проще:
xml_grep /domain/server/name $DOMAIN_HOME/config/config.xml --text_only|sed ':a;N;$!ba;s/\n/ /g'
!!!
Писать всякое гавно на **** языках, чёт было лень поэтому я решил воспользоваться средствами linux=)
Для работы необходим xmllint и xml_grep
т.е пакеты:
libxml2-2.7.6-4.0.1.el6_2.4.x86_64
perl-XML-Twig-3.34-1.el6.noarch
соответственно.
1. Получаем собственно сам список серверов (файл config.xml находится в $DOMAIN_HOME/config/ )
[oracle@ ~]$ xml_grep /domain/server/name config.xml > servers.xml
<?xml version="1.0" ?>
<xml_grep version="0.7" date="Tue Oct 28 10:42:00 2014">
<file filename="config.xml">
<name>AdminServer</name>
<name>tst_1</name>
</file>
</xml_grep>
[oracle@ ~]$ echo "cat //name/text()" | xmllint --nocdata --shell servers.xml | sed '1d;$d;/-/d'|sed ':a;N;$!ba;s/\n/ /g'
AdminServer tst_1
Осталось подумать как это засунуть в одну строку и было бы вообще супер.
Update: Придумал
xml_grep /domain/server/name $DOMAIN_HOME/config/config.xml --text_only|sed ':a;N;$!ba;s/\n/ /g'
!!!
P.S хер его знает но при наличии namespace`ов обойтись просто xmllint не получилось... тем более что эта сука ни как не хотела жрать xpath.
т.е пишет:
xmllint unknown option '--xpath'
Ответ тута такой: Updating
libxml2
(to v2.7.8
) via macports seems to have fixed the problem.Проверил OEL 6.4 почему то:
libxml2.x86_64 2.7.6-17.0.1.el6_6.1 ol6_latest
Время идёт а прогресс стоит.... хотя если заморочится то тут можно найти аж 2.9.1, правда в не оф репозиториях.
P.S всё оказалось проще:
xml_grep /domain/server/name $DOMAIN_HOME/config/config.xml --text_only|sed ':a;N;$!ba;s/\n/ /g'
!!!
Комментарии
Отправить комментарий