Por que tenho tantos processos do apache2?

6

Eu tenho uma máquina Debian 6.0.1 rodando o GNU / kFreeBSD 8.1-1-amd64 e o Apache. Instalei apache2-mpm-worker usando apt-get e meu arquivo apache2.conf contém:

<IfModule mpm_prefork_module>
    StartServers          4
    MinSpareServers       2
    MaxSpareServers       5
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule> 
<IfModule mpm_worker_module>
    StartServers          1
    MinSpareThreads       2
    MaxSpareThreads      20
    ThreadLimit          64
    ThreadsPerChild      20
    MaxClients          100
    MaxRequestsPerChild 400
</IfModule>

Portanto, devo ver apenas alguns processos do Apache sendo executados. No entanto, parece que estou executando o prefork porque, em vez de muitos threads, parece que tenho muitos processos:

root@garrison:/# ps awwwwx | grep apache
78438 ?        S+     0:00 grep apache
78424 ?        S      0:00 /usr/sbin/apache2 -k start
78423 ?        S      0:00 /usr/sbin/apache2 -k start
78422 ?        S      0:00 /usr/sbin/apache2 -k start
78421 ?        S      0:00 /usr/sbin/apache2 -k start
78420 ?        S      0:00 /usr/sbin/apache2 -k start
78419 ?        S      0:00 /usr/sbin/apache2 -k start
78418 ?        S      0:00 /usr/sbin/apache2 -k start
78417 ?        S      0:00 /usr/sbin/apache2 -k start
78416 ?        S      0:00 /usr/sbin/apache2 -k start
78415 ?        S      0:00 /usr/sbin/apache2 -k start
78414 ?        S      0:00 /usr/sbin/apache2 -k start
78413 ?        S      0:00 /usr/sbin/apache2 -k start
78412 ?        S      0:00 /usr/sbin/apache2 -k start
78411 ?        S      0:00 /usr/sbin/apache2 -k start
78410 ?        S      0:00 /usr/sbin/apache2 -k start
78409 ?        S      0:00 /usr/sbin/apache2 -k start
78408 ?        S      0:00 /usr/sbin/apache2 -k start
78407 ?        S      0:00 /usr/sbin/apache2 -k start
78406 ?        S      0:00 /usr/sbin/apache2 -k start
78405 ?        S      0:00 /usr/sbin/apache2 -k start
78404 ?        S      0:00 /usr/sbin/apache2 -k start
78402 ?        S      0:00 /usr/sbin/apache2 -k start
78401 ?        S      0:00 /usr/sbin/apache2 -k start
78400 ?        S      0:00 /usr/sbin/apache2 -k start
78397 ?        Ss     0:00 /usr/sbin/apache2 -k start

No entanto, o Apache claramente tem o módulo trabalhador instalado, não o módulo prefork:

root@garrison:/HostRAID/netboot/IntelNetboot.nbi# /usr/sbin/apache2 -l
Compiled in modules:
  core.c
  mod_log_config.c
  mod_logio.c
  worker.c
  http_core.c
  mod_so.c

O que dá? Por que tenho tantos processos apache2 ? Este servidor está sob carga não . (Ou seja, sem pedidos de http)

    
por Josh 21.05.2011 / 23:38

1 resposta

3

Não tenho certeza, mas sua saída ps me lembrou muito do Linux 2.4 - tópicos usados para aparecer como processos em ps até a mudança de Threads do Linux para a Biblioteca de tópicos do Posix nativo .

Esta citação de este tópico parece confirmar minha suspeita:

Under GNU/kFreeBSD threads are process clones, similarly as under linux 2.4 series

Se este for o caso, isso não significaria que o trabalhador está com defeito. Não é bifurcação - esses são tópicos que você está vendo. Documentos do Apache em ThreadsPerChild :

This directive sets the number of threads created by each child process. The child creates these threads at startup and never creates more. (...) The default value for ThreadsPerChild is 64 when used with mpm_winnt and 25 when used with the others.

link

    
por 22.05.2011 / 00:07