Назад | Перейти на главную страницу

100% перегрузка Apache2 с вызовами select ()

Один или два раза в день один из моих Apache на Debian 5.0.3 (обновленный до последних пакетов) загружает до 100% ЦП (несколько процессов) и остается таким до перезапуска. Стрейс показывает многие из них;

select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})
select(1043, [1042], [], NULL, {1, 0})  = 1 (in [1042], left {1, 0})

быстро следуя друг за другом.

Что бы это могло быть? Это обычная установка LAMP с memcached.

Проблема началась (мы думаем), когда мы начали выводить S3 напрямую вместо того, чтобы сначала получать весь файл, поэтому в pseudecode;

Сначала у нас было;

print file_get_contents($s3url);

теперь у нас есть;

$f = fopen($s3url, "r"); 
while($s=fread($f, 4096)) echo $s;
fclose($f);

Вы проверяли максимальное количество открытых файлов для пользователя сервера Apache?

su -s / bin / sh - www-data ulimit -a

затем проверьте лимит открытых файлов вашей системы в / proc.