On Fri, 14 Jun 2002, Artem Sokovtcev wrote:
> Столкнулся со странной и очень неприятной проблемой - сервер начал
> периодически и хаотично сбоить! Сайт "написан" на шароварной CMS (Perl +
> MySQL) и обращении к любому файлу (кроме бинарных) обязательно влечет за
> собой вызов интерпретатора Perl, тк весь контент сайта лежит в БД и выдается
> из нее через парсер (parser.cgi).
>
> Я допустим обращаюсь по любому существующему URL - получаю в ответ
> нормальные html-страницы, обращаюсь еще несколько раз подряд - несколько раз
> получаю в ответ 500 ошибку. При этом в errors-логе появляется запись вида:
>
> [Thu Jun 13 21:20:02 2002] [error] [client 212.46.234.91] (11)Resource
> temporarily unavailable: couldn't spawn child process:
> /home/user-www/cgi/parser.cgi
>
> [Thu Jun 13 21:20:09 2002] [error] (11)Resource temporarily unavailable:
> fork: Unable to fork new process
>
[skipped]
> Вопросы:
>
> 1. Действительно ли проблема в кол-ве процессов?
Очень на то похоже.
>
> 2. Почему ее раньше не было?
Может быть, меньше была нагрузка на сервер.
>
> 3. Сколько процессов надо (ну на глаз .. примерно ..), чтобы мой сайт мог
> обслуживать 5 клиентов одновременно???
Зависит как минимум:
а) от того, входит ли в число данных процессов сам apache.
б) От среднего количества элементов на страницу, для обработки которых
порождается процесс perl, и от среднего времени его работы для выдачи
элемента.
Понятно, что если документ состоит из 10, например, элементов, для каждого
из которых форкается новый интерпретатор, и они все будут вызываться
одновременно - то будет 10 перлов. Если не одновременно - то какие-то
будут умирать, а на их место рождаться другие - это зависит от структуры
сайта и от времени генерации. А дальше простая арифметика.
В качестве workaround'а, видимо, можно ограничить количество
одновременно живущих апачей - лучше пусть клиент немного подождет, но
остальные будут корректно обслужены.
wbr.,
Ilya Basalaev [Scarab], SWsoft.
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =