Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Директива MaxRequestsPerChild
 
 автор: Dazzl   (06.02.2012 в 14:57)   письмо автору
 
 

Эта директива устанавливает максимальное количество запросов, которые может обработать порожденный процесс до того, как он завершит свою работу

Что такое порожденный процесс?
И что значит "...максимальное количество запросов, которые может обработать... "?

  Ответить  
 
 автор: cheops   (06.02.2012 в 15:23)   письмо автору
 
   для: 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 понятно нужно поменьше ставить).

  Ответить  
 
 автор: Dazzl   (06.02.2012 в 15:41)   письмо автору
 
   для: cheops   (06.02.2012 в 15:23)
 

еще наткнетесь на эту директиву, которая это регулирует
Больше про это нечего нет(в этой главе)

Вы я так понимаю сейчас читаете раздел MPM-модуля? Это модель UNIX, для Windows нужно читать Winnt MPM
Я просмотрел все, эта глава именуется просто "конфигурация apache" и никаких указателей на какую-нить ОС.

Если не хотите, чтобы у вас процесс вообще когда либо заканчивался
наверное разумнее будет все же поставить ограничение, как вы и сказали это потом набухнет свалиться :) не так ли?

Сколько ед выставить ThreadsPerChild, в среднем?

  Ответить  
 
 автор: cheops   (06.02.2012 в 15:51)   письмо автору
 
   для: Dazzl   (06.02.2012 в 15:41)
 

>наверное разумнее будет все же поставить ограничение, как вы и сказали это потом набухнет
>свалиться :) не так ли?
>Сколько ед выставить ThreadsPerChild, в среднем?
В Windows редко приходилось ставить продакшен-сервера, вернее не редко, но не было потом возможности следить за ними, поэтому даже не знаю... Я бы на вашем месте пока поставил бы 0 и последил бы как он будет набухать, потом, если бы мне скорость его набухания решительно бы не понравилась бы, я бы поставил ограничение... зная примерно до каких размеров он разбухает, через несколько дней стало бы ясно с какой частотой происходит его сброс... в общем это хорошо все в динамики глядеть, заранее сложно советовать что-то определенное. Может вы каждый день компьютер будете перезагружать - тогда смысла в этой директиве вообще для вас нет, вы сами вместо неё будете работать :) а может речь идет о 50 Мб и стабильной работе неделями, тогда смысла устанавливать директиву тоже нет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования