Como o apache cria um encadeamento?

3

Enquanto conversava com meus colegas de trabalho alguns dias atrás, um deles mencionou que o apache cria um thread por conexão.

O que ele quer dizer exatamente por conexão?

Digamos que eu tenha um arquivo HTML que contenha três imagens. Quando eu acesso o arquivo, meus navegadores solicitam três imagens para um servidor. então ... o apache faz um tópico para cada imagem?

    
por Moon 04.03.2011 / 12:14

2 respostas

7

"Digamos que eu tenha um arquivo HTML que contenha três imagens. Quando eu acesso o arquivo, meus navegadores solicitam três imagens para um servidor. Então ... o apache cria um thread para cada imagem?"

Sim, se duas coisas são verdadeiras: Primeiro, o navegador teria que solicitar as três imagens usando três conexões separadas. Segundo, as três solicitações teriam que se sobrepor no processamento no lado do servidor.

Se o navegador usar apenas uma conexão, usando keepalives HTTP / 1.1, mesmo que o Apache use um thread para cada conexão, ainda haverá apenas um thread. E mesmo que o navegador use três conexões, se o navegador fechar cada conexão antes de abrir a próxima, o Apache poderá reutilizar o mesmo thread e não precisará de três threads diferentes para lidar com as três conexões.

    
por 27.08.2011 / 20:51
5

A forma como o Apache lida com múltiplas conexões é através do uso de um Módulo de Multi-Processamento (MPM) . O MPM padrão depende do ambiente em que seu servidor está instalado.

Os MPMs padrão nos dois ambientes mais comuns são os seguintes:

Unix    prefork
Windows mpm_winnt

O prefork MPM é baseado em processos e não faz uso de threads. A alternativa em ambientes Unix é o trabalhador MPM, que usa vários processos e vários encadeamentos por processo.

O mpm_winnt MPM usa um processo de servidor, um processo filho e vários segmentos dentro da criança processo.

    
por 04.03.2011 / 12:59