|
|
|
| Эта директива устанавливает максимальное количество запросов, которые может обработать порожденный процесс до того, как он завершит свою работу
Что такое порожденный процесс?
И что значит "...максимальное количество запросов, которые может обработать... "? | |
|
|
|
|
|
|
|
для: Dazzl
(06.02.2012 в 14:57)
| | Тут понимаете еще какая штука, Apache - это UNIX-приложение, там параллельная обработка данных построена на процессах. Т.е. главный процесс порождает несколько дочерних процессов и они обрабатывают запросы. Создание такого процесса дело дорогое с точки зрения производительности, поэтому каждый процесс обрабатывает несколько клиентов, обработал одного, дожидайся следующего запроса, обработал еще одного - жди следующего... однако неделями они висеть не могут, так как из-за утечек памяти они будут разбухать, занимая все больше и больше оперативной памяти (а память может течь не только в Apache, но и в PHP и в его модулях, в общем это почти не контролируемо). Поэтому им назначают определенное количество запросов, после обработки которых они должны самоуничтожиться, а главный процесс следит, чтобы количество процессов было достаточно для обработки клиентских запросов - увеличивая их по мере надобности, но не снижая ниже определенного предела (как правило 8, еще наткнетесь на эту директиву, которая это регулирует).
А теперь самое интересное, в Windows это не работает, так как тут очень хорошие потоки и проще все сделать на них. Вы я так понимаю сейчас читаете раздел MPM-модуля? Это модель UNIX, для Windows нужно читать Winnt MPM, т.е. вам на это все заморачиваться не нужно (только если уже Windows не снесли :). У вас всего два процесса Apache - один главный, другой - всех обслуживает. Тупо выставите в ThreadsPerChild сколько одновременных запросов должен обрабатывать ваш сервер. Если не хотите, чтобы у вас процесс вообще когда либо заканчивался и обновлялся, поставьте MaxRequestsPerChild равным 0, если нужно время от времени обновлять ставьте значение явно больше 1000, а то и 10000 (в UNIX понятно нужно поменьше ставить). | |
|
|
|
|
|
|
|
для: cheops
(06.02.2012 в 15:23)
| | еще наткнетесь на эту директиву, которая это регулирует
Больше про это нечего нет(в этой главе)
Вы я так понимаю сейчас читаете раздел MPM-модуля? Это модель UNIX, для Windows нужно читать Winnt MPM
Я просмотрел все, эта глава именуется просто "конфигурация apache" и никаких указателей на какую-нить ОС.
Если не хотите, чтобы у вас процесс вообще когда либо заканчивался
наверное разумнее будет все же поставить ограничение, как вы и сказали это потом набухнет свалиться :) не так ли?
Сколько ед выставить ThreadsPerChild, в среднем? | |
|
|
|
|
|
|
|
для: Dazzl
(06.02.2012 в 15:41)
| | >наверное разумнее будет все же поставить ограничение, как вы и сказали это потом набухнет
>свалиться :) не так ли?
>Сколько ед выставить ThreadsPerChild, в среднем?
В Windows редко приходилось ставить продакшен-сервера, вернее не редко, но не было потом возможности следить за ними, поэтому даже не знаю... Я бы на вашем месте пока поставил бы 0 и последил бы как он будет набухать, потом, если бы мне скорость его набухания решительно бы не понравилась бы, я бы поставил ограничение... зная примерно до каких размеров он разбухает, через несколько дней стало бы ясно с какой частотой происходит его сброс... в общем это хорошо все в динамики глядеть, заранее сложно советовать что-то определенное. Может вы каждый день компьютер будете перезагружать - тогда смысла в этой директиве вообще для вас нет, вы сами вместо неё будете работать :) а может речь идет о 50 Мб и стабильной работе неделями, тогда смысла устанавливать директиву тоже нет. | |
|
|
|