Apache MPMs Explained

O servidor web Apache é o servidor web mais popular do mundo. Isto é em parte devido ao seu design modular. O Apache 2 introduziu Módulos Multi-Processamento, ou MPMs. Os MPMs alteram a funcionalidade básica do servidor web. Eles fazem isso modificando a forma como o Apache escuta a rede, aceita e trata os pedidos. Muitas destas funcionalidades são bastante técnicas e estão fora do âmbito deste artigo. Este artigo irá explicar brevemente o que são os vários MPMs e como eles funcionam. Para informações mais detalhadas sobre os vários MPMs, visite a Documentação do Apache.

Introduction

Todas as versões do Apache 2.0 e superiores rodam alguma forma de MPM, e há uma variedade de MPMs para os vários sistemas operacionais. Este artigo irá focar apenas naqueles disponíveis para o sistema operativo Linux. Primeiro você vai querer determinar qual versão do Apache e qual MPM o seu servidor está correndo atualmente. Você pode determinar isto executando o seguinte comando na linha de comando.

httpd -V | grep -i 'version\|mpm'

Running that command will give you output that will look like this:

# httpd -V | grep -i 'version\|mpm'
Server version: Apache/2.4.16 (Unix)
Server MPM: event

Neste caso, o servidor está executando o Apache 2.4 e usando o evento MPM. Esta saída pode ser diferente dependendo da versão do Apache e do MPM que seu servidor está rodando atualmente.

Mudar seu MPM em um servidor cPanel é fácil. Basta executar o script EasyApache e selecionar o MPM que você deseja dentre os disponíveis. A lista que está presente será diferente dependendo se você está rodando Apache 2.0, Apache 2.2, ou Apache 2.4. Nas versões do Apache abaixo da 2.4, apenas o Prefork e o Worker são considerados estáveis. O evento MPM é considerado experimental no Apache 2.2 e deve ser usado somente com o Apache 2.4 ou posterior.

Se você se sentir desconfortável rodando o EasyApache você mesmo, por favor entre em contato com o Heroic Support® e nós teremos o maior prazer em ajudá-lo.

Prefork

Com o módulo Prefork instalado, o Apache é um servidor web pré-fabricado e sem threads. Isso significa que cada processo Apache filho contém um único thread e lida com um pedido de cada vez. Por causa disso, ele consome mais recursos do que os MPMs com threads: Worker and Event.

Prefork é o MPM padrão, então se nenhum MPM for selecionado no EasyApache, o Prefork será selecionado. Ainda é a melhor escolha se o Apache tiver que usar bibliotecas não seguras como mod_php (DSO), e é ideal se o isolamento de processos for importante.

Worker

O Worker MPM transforma o Apache em um servidor web multi-processo, multi-tarefa. Ao contrário do Prefork, cada processo infantil sob o Worker pode ter múltiplos threads. Como tal, o Worker pode lidar com mais solicitações com menos recursos do que o Prefork. O Worker geralmente é recomendado para servidores de alto tráfego rodando versões Apache anteriores à 2.4. No entanto, Worker é incompatível com bibliotecas sem threads seguras. Se você precisa executar algo que não é seguro para threads, você precisará ficar com Prefork.

Event

Each processo em Event também pode conter várias threads mas, ao contrário do Worker, cada uma é capaz de mais de uma tarefa. O Apache tem os menores requisitos de recursos quando usado com o Evento MPM.

Event, no entanto, é suportado apenas em servidores rodando Apache 2.4. Sob o Apache 2.2, Event é considerado experimental e é incompatível com alguns módulos em versões antigas do Apache. No entanto, em servidores Apache 2.2 de alto tráfego onde o Apache teve problemas com memória, atualizar o Apache para tirar vantagem do MPM do evento pode render resultados significativos.

Os Outros MPMs

Existem vários outros MPMs experimentais como Threadpool, Perchild e Leader. Liquid Web recomenda contra a execução destes MPMs. Como eles são experimentais, não há garantias de que funcionarão como esperado e não podemos apoiá-los nem garantir que poderemos corrigi-los.

A adição dos Módulos Multi Processo ao Apache aumentou sua potência e flexibilidade. Os MPMs permitem que os usuários mudem o comportamento do núcleo. Isto aumenta o que um usuário pode fazer com o Apache sem ter que instalar software adicional. Se você tiver alguma dúvida sobre isso ou qualquer outra coisa, por favor, ligue para o Heroic Support®.