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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.