Por que o apache2 possui vários processos?

2

Este é o comando ps -A |grep -i apache2 output:

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

Qual é o pid correto quando eu uso o comando kill ?

    
por Liu Hao 05.11.2013 / 16:18

2 respostas

4

Porque é assim que o apache funciona: ele é iniciado como root e depois gera "filhos" que são iniciados como um usuário normal. A segurança é uma abordagem muito boa, já que o usuário apache2 não deve conseguir bloquear seu sistema.

Do manual:

  

Um único processo de controle é responsável por lançar processos filhos que escutam conexões e os servem quando chegam. O Apache httpd sempre tenta manter vários processos de servidor ociosos ou ociosos, prontos para atender às solicitações recebidas. Dessa forma, os clientes não precisam esperar que um novo processo filho seja bifurcado antes que suas solicitações possam ser atendidas.

     

Os StartServers, MinSpareServers, MaxSpareServers e MaxRequestWorkers regulam como o processo pai cria filhos para atender às solicitações. Em geral, o Apache httpd é muito auto-regulável, portanto, a maioria dos sites não precisa ajustar essas diretivas de seus valores padrão. Os sites que precisam atender a mais de 256 solicitações simultâneas podem precisar aumentar o MaxRequestWorkers, enquanto os sites com memória limitada podem precisar diminuir o MaxRequestWorkers para impedir que o servidor seja debatido (trocando memória para disco e vice-versa). Mais informações sobre a criação do processo de ajuste são fornecidas na documentação de dicas de desempenho.

Agora, sobre isso:

  

Qual é o pid correto quando eu uso o comando kill?

Não há necessidade de eliminar as solicitações do apache. Eu sugeriria usar sudo service apache restart e não matar nada relacionado ao apache. O reinicio de um serviço deve sempre ser escolhido ao invés de matar.

    
por Rinzwind 05.11.2013 / 16:27
3

O Apache inicia automaticamente alguns processos filhos que o apache pode responder a várias solicitações mais rapidamente. Assim, o daemon não precisa desembolsar outro novo processo para cada novo pedido.

Esse processo filho tem um ciclo de vida configurado por várias diretivas em sua configuração do apache.

Você pode ver a hierarquia dos processos quando invocar ps da seguinte forma:

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

Então você só precisa "matar" o processo pai. Mas nas modernas distribuições linux de hoje paramos os daemons de uma maneira mais ecológica. Para parar o daemon do apache com todos os seus processos filhos:

sudo service apache stop
    
por chaos 05.11.2013 / 16:33