Я знаю, что модуль перед ветвлением в апаче создает один основной процесс и несколько дочерних процессов для обработки соединений, мой вопрос:
Действительно ли каждый предварительно разветвляется, ребенок обрабатывает одно соединение или обрабатывает один запрос во время? и если это обрабатывает одно соединение, которое означает, что каждое новое соединение должно ожидать в очереди, чтобы быть обработанным одним из неактивных дочерних процессов? и что это говорит об активных соединениях?
Также у меня есть тот же вопрос для рабочего mpm модуль с помощью потоков?
Каждый дочерний элемент prefork обрабатывает одно соединение или обрабатывает один запрос за раз?
Каждый дочерний процесс / поток обрабатывает одно соединение (TCP-соединение).
После закрытия соединения дочерний процесс будет ожидать другого соединения. По одному соединению можно отправить 0, 1 или более запросов (HTTP-запрос).
Если клиент не отправляет запрос, в ваших журналах может быть тайм-аут HTTP 408 в зависимости от вашей конфигурации.
С KeepAlive включен, у вас может быть более 1 HTTP-запроса на одно соединение, так как соединение не будет закрыто после обслуживания первого запроса.
В случае без KeepAlive есть 1 соединение с одним запросом, вот почему может возникнуть вопрос.
каждое новое соединение должно ждать в очереди, чтобы его обработал один из незанятые дочерние процессы?
Да, именно поэтому вы настроите Apache так, чтобы у него было несколько простаивающих серверов / потоков, чтобы новым соединениям не приходилось ждать создания новых дочерних процессов / потоков. Если дочернего процесса недостаточно, новый будет создан по мере необходимости и в соответствии с ограничениями в конфигурации.
Пока для моего собственного понимания процесса.