Почему apache2 имеет несколько процессов?

Это вывод команды ps -A |grep -i apache2:

xxxx@debian:~$ ps -A |grep -i apache2
 2362 ?        00:00:01 apache2
 2365 ?        00:00:00 apache2
 2367 ?        00:00:00 apache2
 2369 ?        00:00:00 apache2

Какой правильный pid при использовании команды kill?

3
задан 29 May 2018 в 05:23

2 ответа

Потому что именно так работает Apache: он запускается от имени пользователя root, а затем порождает «детей», которые запускаются от имени обычного пользователя. С точки зрения безопасности это очень хороший подход, так как пользователь apache2 не должен блокировать вашу систему.

Из руководства:

Один процесс управления отвечает за запуск дочерних процессов, которые прослушивают соединения и обслуживают их, когда они поступают. Apache httpd всегда пытается поддерживать несколько резервных или незанятых серверных процессов, которые готовы обслуживать входящие запросы. Таким образом, клиентам не нужно ждать, пока новые дочерние процессы будут разветвлены, прежде чем их запросы будут обработаны.

StartServers, MinSpareServers, MaxSpareServers и MaxRequestWorkers регулируют, как родительский процесс создает дочерние элементы для обслуживания запросов. В целом, Apache httpd очень саморегулируемый, поэтому большинству сайтов не нужно настраивать эти директивы по умолчанию. Сайты, которые должны обслуживать более 256 одновременных запросов, могут нуждаться в увеличении MaxRequestWorkers, в то время как сайты с ограниченной памятью могут нуждаться в уменьшении MaxRequestWorkers для предотвращения перегрузки сервера (подкачки памяти на диск и обратно). Дополнительная информация о создании процесса настройки приведена в документации по подсказкам производительности.

Теперь об этом:

Какой правильный pid, когда я использую команду kill?

Нет необходимости уничтожать запросы apache. Я бы предложил использовать sudo service apache restart и не убивать ничего, связанного с apache. Изящный перезапуск службы всегда следует выбирать вместо убийства.

0
ответ дан 29 May 2018 в 05:23

Apache запускает автоматически некоторые дочерние процессы, которые apache могут ответить на несколько запросов быстрее. Таким образом, демону не нужно создавать новый процесс для каждого нового запроса.

У такого дочернего процесса есть жизненный цикл, сконфигурированный несколькими директивами в вашей конфигурации apache.

Вы можете увидеть иерархию процессов, когда вы вызываете ps следующим образом:

root@host:~$ ps faux | grep apache
root      3122  0.0  0.5  37164 11172 ?        Ss   Aug09   1:55 /usr/sbin/apache2 -k start
www-data 21970  0.0  0.8  43636 17060 ?        S    Nov03   0:41  \_ /usr/sbin/apache2 -k start
www-data 27484  0.0  0.8  43372 16660 ?        S    10:41   0:04  \_ /usr/sbin/apache2 -k start
www-data 29631  0.0  0.7  43132 16360 ?        S    13:36   0:02  \_ /usr/sbin/apache2 -k start
www-data 29632  0.0  0.5  37644 10888 ?        S    13:36   0:03  \_ /usr/sbin/apache2 -k start
www-data 29696  0.0  0.8  43380 16644 ?        S    13:42   0:02  \_ /usr/sbin/apache2 -k start
www-data 30025  0.0  0.7  42584 15864 ?        S    14:10   0:02  \_ /usr/sbin/apache2 -k start
www-data 30026  0.0  0.8  43968 17216 ?        S    14:10   0:02  \_ /usr/sbin/apache2 -k start
www-data 30092  0.0  0.7  43348 16556 ?        S    14:13   0:01  \_ /usr/sbin/apache2 -k start
www-data 30184  0.0  0.8  43636 16884 ?        S    14:18   0:01  \_ /usr/sbin/apache2 -k start
www-data 30235  0.0  0.7  42576 15836 ?        S    14:23   0:01  \_ /usr/sbin/apache2 -k start

Так что вам просто нужно «убить» родительский процесс. Но в современных современных дистрибутивах linux мы останавливаем демонов более экологичным способом. Чтобы остановить демон apache со всеми его дочерними процессами:

sudo service apache stop
0
ответ дан 29 May 2018 в 05:23

Другие вопросы по тегам:

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