Я выделил 5 ГБ памяти для процессов Apache.
При базировании на том, что каждый процесс Apache использует в средних 42.5 МБ, я установил следование моего сервера (при вычислении, как будто каждый процесс использует 50 МБ памяти):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 100
MaxRequestsPerChild 0
</IfModule>
Теперь для вопросов:
StartServers
установить?Worker mpm
(PHP и т.д.), делает выравнивание нагрузки, мой наилучший вариант для интенсивного трафика?Я прочитал ответы здесь и искал много в Google для этого вопросы и ничто не мог найти достаточно конкретным.
Остерегайтесь: большинство apache-процессов делит большую часть своей памяти с родителями/собственниками. Вы не можете легко просуммировать значения из выделенной памяти процессов apache. Лучшее, что вы можете сделать: вы запускаете много процессов apache и проверяете, как это изменяет выделенную память.
1: StartServers имеет только ограниченное значение. Это значит, сколько дочерних процессов будет запущено изначально. Min/MaxSpareServers гораздо важнее.
2: Я не могу понять, Вы ничего не сказали о Вашем решении по балансировке нагрузки. Если вы хотите иметь возможность обрабатывать большой трафик, то лучше всего использовать рабочий apache (или даже другой тип http-сервера) для обслуживания статических файлов, а для динамических языков (вероятно, для php) - преборк (я предлагаю mpm-itk). Работник должен пересылать динамические запросы на сервер, основанный на prefork. Эта структура также может быть легко расширена до балансируемого по нагрузке кластерного решения.
3: MayRequestPerChild==0 означает, что процессы никогда не будут перезапускаться. Таким образом, если с ними возникнут проблемы, они никогда не будут исправлены, или если они протекают, это тоже не будет решено. Может быть нормально, если Ваша система стабильна, и Вы используете только идеально собранные языки на стороне сервера (php не один из них!), но я думаю, по практическим соображениям лучше использовать большое целое значение (в большинстве случаев я использую 100 или 500). Остерегайтесь: простой перезапуск дочернего процесса не так уж и дорого по сравнению с обработкой 100-500 запросов.
.