
Я хотел бы знать, почему команда запуска сервера Apache2 на самом деле запускает три процесса
Действительно, если ввести эту команду:
sudo apache2ctl -k start
затем, введя эту команду:
ps aux | grep apache2
дает три процесса, соответствующие apache2. Это нормально?
решение1
Да. Apache имеет несколько различных модулей обработки для обработки запросов. Наиболее распространенными являются worker
и prefork
. Оба используют несколько процессов. Prefork
использует процесс на каждое клиентское соединение и всегда следит за тем, чтобы было доступно несколько простаивающих процессов для обработки новых соединений без задержки. Worker
по-прежнему использует несколько процессов, но также использует потоки в этих процессах. Это использует меньше ресурсов по сравнению с prefork
обычным, но все еще требует нескольких процессов.
Один процесс, который вы видите, вероятно, является "главным" процессом, который открывает порты TCP и ждет соединений, а также передает входящие соединения другому процессу Apache для выполнения фактической обработки. Другие процессы являются рабочими процессами, либо из модуля prefork
, либо из worker
него.