То, как делает апача, обрабатывает соединения и запросы с помощью рабочего и предварительного ветвления mpm модули?

Я знаю, что модуль перед ветвлением в апаче создает один основной процесс и несколько дочерних процессов для обработки соединений, мой вопрос:

Действительно ли каждый предварительно разветвляется, ребенок обрабатывает одно соединение или обрабатывает один запрос во время? и если это обрабатывает одно соединение, которое означает, что каждое новое соединение должно ожидать в очереди, чтобы быть обработанным одним из неактивных дочерних процессов? и что это говорит об активных соединениях?

Также у меня есть тот же вопрос для рабочего mpm модуль с помощью потоков?

3
задан 30 December 2014 в 16:04
1 ответ

Каждый дочерний элемент prefork обрабатывает одно соединение или обрабатывает один запрос за раз?

Каждый дочерний процесс / поток обрабатывает одно соединение (TCP-соединение).

После закрытия соединения дочерний процесс будет ожидать другого соединения. По одному соединению можно отправить 0, 1 или более запросов (HTTP-запрос).

Если клиент не отправляет запрос, в ваших журналах может быть тайм-аут HTTP 408 в зависимости от вашей конфигурации.

С KeepAlive включен, у вас может быть более 1 HTTP-запроса на одно соединение, так как соединение не будет закрыто после обслуживания первого запроса.

В случае без KeepAlive есть 1 соединение с одним запросом, вот почему может возникнуть вопрос.

каждое новое соединение должно ждать в очереди, чтобы его обработал один из незанятые дочерние процессы?

Да, именно поэтому вы настроите Apache так, чтобы у него было несколько простаивающих серверов / потоков, чтобы новым соединениям не приходилось ждать создания новых дочерних процессов / потоков. Если дочернего процесса недостаточно, новый будет создан по мере необходимости и в соответствии с ограничениями в конфигурации.

Пока для моего собственного понимания процесса.

2
ответ дан 3 December 2019 в 07:00

Теги

Похожие вопросы