Страница 1 из 1

Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-02-06 15:27:05
ps
Есть веб-сервер на базе FreeBSD. Регулярно под апачем подвисают скрипты. Как можно сделать так, чтобы они прибивались? Сейчас регулярно запускаю самописный скрипт, который через команду ps смотрит подвисшие процессы, и прибивает их. Можно как-то настроить ОС, чтобы она сама прибивала такие процессы по достижению некоего процессорного времени?

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-02-06 15:39:48
zingel
Настроить login.conf для пользователя www

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-02-06 15:41:58
Alex Keda
проблематично....
например не работает при php в режиме фаст-цги....

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-02-06 15:45:52
zingel
как варианта по крону делать, но я думаю есть варианты с suexec

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-02-06 15:47:44
Alex Keda
нету...
даже в стартовом скрипте через лимитс пробовал ставить - не действует....

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-02-06 15:50:45
zingel
едрёна кочерыга, тогда только по-крону - мега скриптом......

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-05-04 0:14:16
ProFTP
как это делаетьсмя? :twisted: :P

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-05-04 1:27:33
zingel
не прошло и полгода....
ну вот как-то так:

Код: Выделить всё

mkdir -p /usr/local/scripts/ && cd /usr/local/scripts/; touch parser.sh
vi parser.sh

Код: Выделить всё

#!/usr/local/bin/bash

while true;
do

ps -auxx | grep httpd| grep  handling | awk '{print $13}' | sort | uniq -c | sort > tt

cat tt | tail -n 1 | awk '{print $1}' > rr

File=rr

{

read line1

} < $File
q
echo "SCUKO:"  $line1

if [[ $line1 -gt 7 ]]
then

cat tt | tail -n 1 | awk '{print $2}' ; echo " - GRUZILO!"

else

echo "OH YES!OH YES!"

fi

sleep 3

done;

Код: Выделить всё

chmod +x parser.sh
засовываем в крон

Код: Выделить всё

crontab -e

Код: Выделить всё

*/5 * * * * /usr/local/scripts/parser.sh
Вот только для этой штуки неплохобы делать renice, ну это уже другим скриптом и это совсем другая история, вернее страшная сказка на ночь, сказка про зомби.

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-07 16:09:13
ProFTP
а зомби как прибивать?

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-07 20:12:13
zingel
kill -9

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-07 22:49:23
ProFTP
сенксЮ надо будет написать срикпт
если апаче и пхп не от инита работает...?

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-08 0:30:42
f_andrey
Рекомендую взглянуть в сторону новых солярисов там они в службах SMF как раз реализуют этот функционал +отслеживание зависимости служб, жесткое, мягкое при старте при работе. технология новая и весьма навороченная но весьма любопытная. и революционная, или это эволюция

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-08 1:22:06
zingel
Вот таких вещей не нужно делать:

Код: Выделить всё


int main(void) {
        int i;
        if (!fork()) {
                _exit(0);
        }
вот и вся эволюция.

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-19 2:58:47
ProFTP
zingel писал(а):не прошло и полгода....
ну вот как-то так:

Код: Выделить всё

mkdir -p /usr/local/scripts/ && cd /usr/local/scripts/; touch parser.sh
vi parser.sh

Код: Выделить всё

#!/usr/local/bin/bash

while true;
do

ps -auxx | grep httpd| grep  handling | awk '{print $13}' | sort | uniq -c | sort > tt

cat tt | tail -n 1 | awk '{print $1}' > rr

File=rr

{

read line1

} < $File
q
echo "SCUKO:"  $line1

if [[ $line1 -gt 7 ]]
then

cat tt | tail -n 1 | awk '{print $2}' ; echo " - GRUZILO!"

else

echo "OH YES!OH YES!"

fi

sleep 3

done;

Код: Выделить всё

chmod +x parser.sh
засовываем в крон

Код: Выделить всё

crontab -e

Код: Выделить всё

*/5 * * * * /usr/local/scripts/parser.sh
Вот только для этой штуки неплохобы делать renice, ну это уже другим скриптом и это совсем другая история, вернее страшная сказка на ночь, сказка про зомби.
извините, а что делает данный скрипт?? он по-моиму только паять прилично?

я хотел чтобы автоматически прибивал процессы, точнне чтобы быстрее освобождал память тем процесам которые уже не работают, но наверное так нельзя...

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-19 3:08:13
paradox
этот скрипт топик мастеру
или ты думал это тебе?=)
скрипт делает то о чем топик

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-19 3:18:34
ProFTP
только результата нету, load averages до 20 доскакивает

Re: Как автоматически прибивать подвисшие процессы?

Добавлено: 2008-06-19 5:22:48
zingel
снятие нагрузки с сервера, это целая наука, за один раз ничего ен получится, нужно сидеть и выяснять что грузит, какие процессы, почему, что именно они хотят от жесткого диска, как быстро отдается контент, проводить реверс-тюнинг сетевого стека, ядра, оптимизировать настройки ПО. Если хотите, я могу посмотреть на Ваш сервер и сказать, что можно сделать, для этого нужно:

1)Связаться со мной
2)Дать мне доступ на сервер