O Apache vem em diferentes sabores, sendo dois dos mais comuns prefork e worker . O modelo prefork gera vários processos, mas cada processo lida apenas com um pedido de cada vez. O modelo de trabalho, por outro lado, gera vários processos e cada processo tem vários encadeamentos, cada encadeamento manipulando uma solicitação por vez.
Dependendo da sua distribuição, você pode estar executando um modelo diferente para o que você está esperando. Você está esperando prefork mas tem certeza que esse é o tipo que está sendo executado? Para descobrir o tipo:
$ httpd -V Server version: Apache/2.2.15 (Unix) Server built: May 28 2010 07:58:25 Server's Module Magic Number: 20051115:24 Server loaded: APR 1.4.2, APR-Util 1.3.9 Compiled using: APR 1.4.2, APR-Util 1.3.9 Architecture: 32-bit Server MPM: Prefork threaded: no forked: yes (variable process count)
Nesse caso, meu Server MPM
é Prefork
, mas o seu pode ser diferente. No meu servidor Debian executando o Apache2 é Worker
:
# /usr/sbin/apache2 -V Server version: Apache/2.2.9 (Debian) Server MPM: Worker
Em algumas máquinas (como RedHat) não é incomum que ambos os binários prefork e worker estejam presentes (um chamado httpd
e outro chamado httpd.worker
ou algo similar). Você pode querer verificar novamente (usando ps
ou top
ou cat /etc/init.d/httpd
) que está sendo lançado.