Перед настройкой директив вы должны понять, как работают директивы. Позвольте мне объяснить простым языком. Сервер запустит 2 дочерних процесса, что определяется директивой StartServers. Каждый процесс запускает 20 потоков, что определяется директивой ThreadsPerChild, так что это означает, что 2 процесса могут обслуживать только 40 одновременных подключений / клиентов (т. Е. 20 × 2 = 40). Так что, если поступит больше запросов?
Теперь, если приходит больше одновременно работающих пользователей, запускается другой дочерний процесс, который может обслуживать еще 20 пользователей. Но то, сколько дочерних процессов может быть запущено, контролируется параметром ServerLimit, это означает, что в приведенной выше конфигурации у меня может быть всего 10 дочерних процессов, причем каждый дочерний процесс может обрабатывать 20 потоков, в общей сложности 10 × 20 = 200 одновременных пользователей. ,
Но есть проблема, число, определенное в MaxClients, здесь равно 100, это означает, что после 5 дочерних процессов, ни один дополнительный процесс не запустится, поскольку мы определили верхний предел MaxClients. Это также означает, что если я установлю MaxClients на 500, после 10 дочерних процессов и 200 подключений, дополнительный процесс не запустится, и мы не сможем обслуживать более 200 одновременных клиентов, даже если у нас увеличен параметр MaxClient.
В этом случае нам также нужно увеличить ServerLimit до 500/20, т.е. MaxClients / ThreadsPerChild = 25
Хорошо, теперь вы знаете директивы и как они работают, проблема в том, как рассчитать директивы. Давайте перейдем к вычислению значений директив.
Вы можете использовать этот сценарий оболочки, чтобы определить средний объем памяти, потребляемый одним процессом Apache. В дополнение к этому он покажет общий объем памяти, потребляемой всеми процессами Apache. Просто распакуйте и выполните команду sh. Точные результаты будут показаны, когда сервер находится под большой нагрузкой.
Выход
Использование памяти Apache (МБ): 57,586 Средний размер процесса (МБ): 10,2
Apache Memory Usage (MB): 57.586
Average Proccess Size (MB): 10.2
если в среднем предположим, что один процесс Apache потребляет 50 МБ ОЗУ, а сервер имеет ОЗУ 2048 МБ, и вы хотите оставить 512 МБ для остальных процессов, то:
MaxClients = (2048MB – 512MB)/10MB = 153.6 ~ 153