Como o apache lida com conexões e solicitações usando os módulos mpm worker e prefork?

3

Eu sei que o módulo prefork no apache cria um processo mestre e vários processos filhos para lidar com conexões. Minha pergunta é:

Cada criança prefork lida com uma conexão ou lida com uma solicitação por vez? e se ele lida com uma conexão, isso significa que cada nova conexão precisa aguardar na fila para ser tratada por um dos processos-filhos inativos? e o que isso diz sobre conexões keep-alive?

Eu também tenho a mesma pergunta para o módulo mpm do trabalhador usando threads?

    
por Hussein Galal 30.12.2014 / 15:04

1 resposta

2

Does each prefork child handles one connection or handles one request per time?

Cada filho / segmento manipula uma conexão (conexão TCP).

Quando a conexão for fechada, o processo filho aguardará por outra conexão. Em uma conexão, é possível enviar 0, 1 ou mais solicitações (solicitação HTTP).

Se o cliente não enviar uma solicitação, você poderá ter um tempo limite de HTTP 408 em seus registros, dependendo de sua configuração.

Com o KeepAlive ativado, você pode ter mais de uma solicitação HTTP por conexão , como a conexão não será fechada uma vez que o primeiro pedido é servido.

No caso sem o KeepAlive, há 1 conexão com uma solicitação, por isso pode ser a pergunta.

each new connection needs to wait in the queue to be handled by one of the idle child processes?

Sim, é por isso que você configurará o Apache para ter alguns servidores / threads ociosos, portanto, novas conexões não precisam aguardar a criação de novos processos / threads filhos. Se não houver processo filho suficiente, um novo será criado conforme necessário e de acordo com os limites da configuração.

Até agora, para minha própria compreensão do processo.

    
por 30.12.2014 / 19:13