sholoma 07.02.2010 11:13
Есть проблема! — Мониторинг процессов
Уважаемые товарищи, пожалуйста подскажите, как можно реализовать следующую штуковину..Изредка падает апач, надо чем-то мониторить, запущен ли он, и если нет то запускать. Наверняка есть какие-то службы для этого, но я таких пока не знаю..
Ну, возможно есть и какие-то готовые решения. Сказал то, что первое пришло в голову. Мне бы было наверное проще написать самому, т.к. скрипт по сути выйдет в строчек 10.
лучше поразгребай логи? почему апаче падает. некрасиво же...
ну или в крайнем случае мониторь лог файл на наличие _ацке_строчке_опаадении_аппача_
ну или в крайнем случае мониторь лог файл на наличие _ацке_строчке_опаадении_аппача_
По-хорошему, вам бы действительно выяснить, почему оно падает. Кроме логов ещё советую глянуть в dmesg и посмотреть, не убивается ли оно ядром.
По идее, апач должен создавать pid-файл, по которому можно искать процесс с определённым PID.
Кроме того, на сегодня существуют небольшие утилиты как раз для такого дела. Они называются супервизоры(supervisor). Посмотрите на daemontools от DJB.
По идее, апач должен создавать pid-файл, по которому можно искать процесс с определённым PID.
Кроме того, на сегодня существуют небольшие утилиты как раз для такого дела. Они называются супервизоры(supervisor). Посмотрите на daemontools от DJB.
Это всё конечно не считая комплексных сетевых утилит мониторинга, типа Nagios.
while < 1 >; do apache2; date -R > /root/down.txt; killall apache2; sleep 5; done
только вместо apache2 там что то другое придётся написать. В общем нужно запускать апач не в бэкграуннде.
Если апач именно падает - то такое будет работать. Если апач просто пересттаёт отвечать - напишите скрипт, который будет проверять через w3m какой либо сайт. Если вдруг w3m выдаст что то нето - то киллять процессы апача и запускать его.
W3m моожно заменить на wget + cat
только вместо apache2 там что то другое придётся написать. В общем нужно запускать апач не в бэкграуннде.
Если апач именно падает - то такое будет работать. Если апач просто пересттаёт отвечать - напишите скрипт, который будет проверять через w3m какой либо сайт. Если вдруг w3m выдаст что то нето - то киллять процессы апача и запускать его.
W3m моожно заменить на wget + cat
Если падает апач, нужно искать проблему в апаче, нэ?
Конечно можно бороться со следствием, но более Ъ - найти причину.
Конечно можно бороться со следствием, но более Ъ - найти причину.
не всегда проблему удаётся найти в адекватные сроки. Как например у меня ejabberd - падал и всё тут. Всё перековырял. Запускал указанным выше методом. Через пару недель такой работы - ejabberd перестал падать.
да, сам по себе)
ejabberd - вообще магическая вещь. До сих пор мало кто понимает, почему на debian lenny установленный из реп ejabberd не запускается =)
ejabberd - вообще магическая вещь. До сих пор мало кто понимает, почему на debian lenny установленный из реп ejabberd не запускается =)
Deb/Squeeze, sudo aptitude ejabberd.
Делал буквально сегодня в 5:00 утра, работает :)
Делал буквально сегодня в 5:00 утра, работает :)
Как уже сказали лучше разбераться с апачем. А по вопросу поищи информацию по слову watchdog.
Ошибку не знаю как исправить..
вот записи из лога
Graceful restart requested, doing restart
sage fault or similar nasty error detected in the parent process
вот, перезагружается он непонятно когда и почему сам, примерно раз в сутки-двое..
иногда рестартится нормально, иногда вот так.. что только вырубается но не запускается((
вот записи из лога
Graceful restart requested, doing restart
sage fault or similar nasty error detected in the parent process
вот, перезагружается он непонятно когда и почему сам, примерно раз в сутки-двое..
иногда рестартится нормально, иногда вот так.. что только вырубается но не запускается((
Версия апача, и я понимаю, PHP юзаешь?
Случайно не Alternative PHP Cacher?
Случайно не Alternative PHP Cacher?
Я вот юзаю APC для PHP на Debian Lenny (из стандартного репозитория) и раз-два в месяц он у меня вылетает с ошибками в логах:
Думаю вот на APC грешить или нет, но без него долго потестить не хватает силы воли - что-то всё тормозит ужастно ;( Да и кеширование данных в PHP через него на некоторых сайтах реализовано, поэтому избавляться не очень хочется...
Feb 5 14:43:42 sea kernel: <6910307.868512> apache2<15246>: segfault at 7fff0db91fe8 ip 7f6058d559e0 sp 7fff0db91ff0 error 6 in libphp5.so<7f60589fc000+587000>
Думаю вот на APC грешить или нет, но без него долго потестить не хватает силы воли - что-то всё тормозит ужастно ;( Да и кеширование данных в PHP через него на некоторых сайтах реализовано, поэтому избавляться не очень хочется...
Просто по запросу seg fault or similar nasty error первой ссылкой выдает /http://www.electrictoolbox.com/seg-fault-or-similar-nasty-error/
Где юзается Apache, PHP5 и APC.
Только там несколько другая штука.
Где юзается Apache, PHP5 и APC.
Только там несколько другая штука.
А еще гугл выдает следующее:
Re: Регулярный graceful restart Apache
Truewar-6.5.88 » 2008-07-10 9:34:04
Причину Graceful обнаружил. Нерационально была настроена ротация логов. Получалось как раз в начале часа проверялся размер и раз в 1-3 часа что, то да заполнялось больше, чем нужно. А при ротации логов, чтобы апач начал писать в новый лог-файл производится graceful рестарт.
Truewar-6.5.88 » 2008-07-10 9:34:04
Причину Graceful обнаружил. Нерационально была настроена ротация логов. Получалось как раз в начале часа проверялся размер и раз в 1-3 часа что, то да заполнялось больше, чем нужно. А при ротации логов, чтобы апач начал писать в новый лог-файл производится graceful рестарт.
Да не сам,
Graceful restart requested, doing restart
его кто-то просит сделать грейсфул рестарт, после которого и происходит сегфолт
попробуй поотчипляй модули различные сначала ненужные совсем и по градиенте к нужным. Вдруг это не сам апача, а модуль какой нибудь, как булей заметил довольно логично (+)
Попробуйте пакет daemontools: http://cr.yp.to/daemontools.html
Он проверяет запущен ли сервис, а если нет - то поднимает.
Он проверяет запущен ли сервис, а если нет - то поднимает.
Для таких вещей принято использовать Нагиос. Но учти, что скрипт почти наверняка придётся писать к нему самому. Так что проще всего просто написать скрипт, проверяющий состояние апача и передёргивающий его по случаю. Но вообще падающий апач это очень плохо, так что лучшее разобраться почему он падает.
Костыль прост как три рубля. В крон на каждую минуту-две:
ps ax | grep %processname% | grep -v grep -q || service %processname% restart
ps ax | grep %processname% | grep -v grep -q || service %processname% restart
Сам хотел подобный однострочник написать :) но, имо, лучше апач исправить.
Пихаем в cron скрипт, который, скажем, каждые 15-20 минут проверяет, запущен ли apache. Для этого смотрит список процессов и pid файл в /var/run (если мне память не изменяет, там должен быть и апачевский файл).