Como posso saber se o apache está sendo executado (ou configurado para ser executado) como pré-fork ou trabalhador?
Como posso saber se o apache está sendo executado (ou configurado para ser executado) como pré-fork ou trabalhador?
Respostas:
O MPM é configurado em tempo de compilação. Uma maneira de descobrir isso depois é listar os compilados nos módulos. Essa lista incluirá o MPM escolhido. A listagem pode ser realizada com o binário apache, com o sinalizador -l.
andreas@halleck:~$ apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
worker.c
http_core.c
mod_so.c
andreas@halleck:~$
Aqui encontramos o módulo worker.c, portanto, estou executando o MPM do trabalhador.
apache2ctl -Mpara listar os módulos ativos.
As respostas dadas por Series8217 e Andol estão incorretas.
A questão era: como saber se o Apache está executando o prefork ou o worker. O conselho dado pelas outras respostas apenas informa qual é o MPM padrão (com base nos módulos compilados), não se esse padrão ou outra opção estiver sendo usada no momento.
Se httpd -Vmostra prefork, isso significa que o prefork é o MPM padrão compilado. Isso pode ser substituído alterando uma configuração do arquivo de configuração do Apache, conforme mostrado neste processo:
/etc/sysconfig/httpdno CentOS / RedHat)HTTPD=/usr/sbin/httpd.workerQual MPM está realmente em execução pode ser mostrado usando este processo:
curl localhost/server-infohttpd -Vnovamente - ainda mostrará prefork, não workerBottom line:
httpd -V mostra a opção padrão, não qual opção está realmente em usoExistem respostas em muitos sites dizendo: use httpd -Vpara saber se o Apache está executando o prefork ou o worker. Eles estão todos errados. Experimente o procedimento acima para ver por si mesmo.
No Ubuntu 14.04
a2query -M
Diz event, prefork,worker
Você pode alterá-lo adicionando links simbólicos de mpm_<chosen>de mods-availablepara mods-enabledem /etc/apache2.
Somente um é permitido por vez.
eventMPM é, de acordo com o site da Apache, "uma variante do MPM de trabalho com o objetivo de consumir threads apenas para conexões com processamento ativo".
No RedHat e derivados, basta iniciar topou ps auxver o nome do processo httpd:
httpd significa que o Apache está sendo executado como preforkhttpd.worker significa que está sendo executado como trabalhadorNo RHEL / Fedora / etc, execute httpd -V. Você obterá alguma saída que inclui o seguinte:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
Aqui 'Server MPM' é 'Prefork', então meu servidor está executando o MPM pré-fork.
Chris Johnson está correto. Vá para httpd.conf => adicione esta linha:
<Location /server-info>
SetHandler server-info
</Location>
Reinicie o apache: /etc/init.d/httpd restart. Em seguida, acesse localhost / server-info pelo seu navegador e consulte a seção Nome do MPM .
Aqui está outro método que eu espero que seja confiável para determinar qual MPM está em uso. Adicione o seguinte ao seu httpd.conf:
<IfModule prefork.c>
Header append X-MPM prefork
</IfModule>
<IfModule worker.c>
Header append X-MPM worker
</IfModule>
Em seguida, verifique os cabeçalhos usando curl -I localhost | grep X-MPM.
no centos (ou rhel) você pode executar este comando:
ps -ef | grep httpd
se você vê /usr/sbin/httpd.workerexecutando, está usando o MPM de trabalho. se você vir /usr/sbin/httpdexecutando, está usando o prefork
A resposta de Chris Johnson está certa.
Depois de ativar o módulo info, conforme documentado na documentação do Apache ( http://httpd.apache.org/docs/2.2/mod/mod_info.html ), esse liner fornecerá o MPM que você está usando:
links -dump http://localhost/server-info/?server | grep "MPM Name"