Исходные данные:
Linux Debian Sarge, ядро 2.6.8-2-686-smp
Apache/1.3.33 (Debian GNU/Linux) mod_throttle/3.1.2
Сайт посещаемый (1500 уников, 15000 хитов), тут же на апаче реализован сервис скачки файлов, файлы льются подолгу, одноврменно льет около 100-150 человек, процессы спокойно висят жрать не просят, все работает. Каждый процесс апача весит около 6 метров, памяти хватает.
Проблемы:
Ни с того ни с сего (где-то день-два после рестарта) все чайлдовые процессы валятся в глубокий ступор... висят в топе с высоким приоритетом и в состоянии R, проц при этом скушан на 97%, load average всегда разный, но всегда необычно высок от 6 до 180... рестарт апача сразу помогает.
Некоторые настройки и подозрения на них:
Сперва думал что досят (слишком много форкалось апачей постоянно, поставил лимиты с помощью троттла - 10 запросов в секунду к закачке и 100 запросов в секунду ко всему сайту), все работало нормально, по статистике троттла лимиты превышаются периодически в 1.5-3 раза, он их отправляет на 503-ю, то есть все хорошо.
В конфиге:
Код:
Timeout 10
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 10
SendBufferSize 1048576
MinSpareServers 2
MaxSpareServers 7
StartServers 10
MaxClients 220
MaxRequestsPerChild 0
Потом пало подозрение на MaxRequestsPerChild - там было число около 200, то бишь чайлд отработав 200 запросов прибивался и запускался новый, так как чайлды висели подолгу (отдавая файлы) то их в такой ситуации копилось слишком много, и все падало, сейчас поставил ноль, то бишь не ограничиваю кол-во запросов на чайлда.
Собственно вопросик:
Сталкивался ли кто с таким, и как бороли?
P.S. Nginx и прочие легковесы для отдачи статики не предлагать, тут есть свои хитрости, ибо каждый байтик на счету, за него заплочены деньги клиентов.
В догонку:
только что в логе заметил, в момент последнего падения вот что:
server reached MaxClients setting, consider raising the MaxClients setting
я почему-то думал, что у меньшая это значение, апач не сможет насоздавать потомков больше, чем я указал.... или я не прав?