LINUX.ORG.RU
ФорумAdmin

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


0

0
Подскажите, как бороться с зависшими процессами, у которых SS > 10000
В PHP скриптах используется fsockopen и когда удаленный сервер не отвечает, скрипт виснит и висит бесконечно в server-status под буквой W, что собственно пожирает ресурсы.

Как организовать убиение таких чилдов или не допустить их появления?

P.S. Использование FastCGI не подходит, так как он не работает с функцией readfile();
Как-то была тема по убиванию ненужных процессов, поищи на форуме. Возможно кто-то вспомнить как называлась тема.
gh0stwizard ★★★★★
()
> не допустить их появления?

Не использовать PHP или таки попытаться написать скрипты нормально?

P.S. Тема уже обсуждалась, то ли тут, то ли на http://lists.debian.org/debian-russian

undertaker ★★
()
Ответ на: комментарий от gh0stwizard
> Как-то была тема по убиванию ненужных процессов, поищи на форуме. Возможно кто-то вспомнить как называлась тема.

Ага, вроде, про OOMKiller что-то.

undertaker ★★
()
Если ты владелец этих PHP-скриптов -> у fsockopen() есть параметр timeout. Если нет, то крути default_socket_timeout в php.ini

>Использование FastCGI не подходит, так как он не работает с функцией readfile()

Все работает. Что за заявления такие?
Chumka ★★★
()
Ответ на: комментарий от Chumka
$pic="http://domen.ru/pic.jpg";
readfile($pic);

Вот такой код не работает.

timeout не помогает...

default_socket_timeout 3600

OOM Killer не могу толком по нему что-либо найти...

#yum serach *killer* тоже ничего не находит
Decanter
() автор топика
в похапе есть параметр max_execution_time :)
Komintern ★★★★★
()
Ответ на: комментарий от Decanter
Этот код работает и в mod_php и FastCGI (выдает бинарный мусор):
<?
$file = "http://imgl.yandex.net/i/www/logo1.png";
readfile($file);
?>

max_execution_time учитывает только время выполнения скрипта. И не учитывает ожидание типа sleep()

Топикстартер, а ты уверен, что apach-процессы висят на соединении с недосутпным сервером? Попробуй потрейсить эти процессы.
Chumka ★★★
()
Ответ на: комментарий от Chumka
Я не уверен... Так как на моменты зависаний удаленный сервер пингуется моим сервером.
А есть возможность одной командой убить процессы в которых SS > 10000
я бы добавил эту команду в крон

P.S. У меня код не работал... Может потому, что FastCGI у меня запущен как модуль к apache, а статику обрабатывает nginx
Decanter
() автор топика
Ответ на: комментарий от Decanter
linux/mm/oom_kill.c

как бы намекает что сие написано на Си для ядра линукс. Иными словами надо собрать ядро с включенной опцией OOM Killer в конфигурации и загрузить систему с новым ядром.
gh0stwizard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.