Conexão Apache vs. Solicitação

1

Peço desculpas antecipadamente se esta é uma questão básica, mas estou bastante confuso depois de ler a documentação do Apache e outros tutoriais.

Um único processo prefork do Apache atende a todas as solicitações HTTP de um determinado cliente? Foi o que pensei, mas quando reduzo os maxclients para um número baixo, os tempos de carregamento da minha página vão para um rastreamento. Isso apesar do fato de eu ser o único cliente no servidor em questão. Isso sugeriria que cada processo atende a uma única solicitação HTTP por vez, em vez de atender a todas as solicitações na janela TimeOut.

Portanto, se uma única página da Web exigir 15 solicitações HTTP para carregar totalmente, eu preciso de 15 processos Apache pré-requisitos para atendê-la da maneira ideal?

    
por user101570 25.11.2011 / 17:20

2 respostas

1

A maneira que normalmente pensamos sobre o protocolo HTTP, isso não deve ser um problema.

Navegadores modernos usam conexões keep-alive , que podem transportar apenas uma solicitação de cada vez; Nesse sentido, usar MaxClients 1 não deve ter impacto, pois cada solicitação nessas conexões é concluída antes do próximo início.

No entanto, isso é outra coisa sobre navegadores modernos; eles usam várias conexões. Nos dias de hoje, você pode obter uma página em HTML que requer o carregamento de 40 outros recursos; imagens, javascript, css. Não faz muito sentido, do ponto de vista da eficiência, empilhá-los em um único arquivo para enviar por meio de uma única conexão; em vez disso, eles são divididos em algumas conexões (cada uma delas ainda é de arquivo único) para buscar simultaneamente.

Não consigo encontrar uma boa fonte autorizada de informações sobre o comportamento de cada navegador, mas o que posso encontrar sugere que 6 conexões é sobre normal. É aí que entra a concorrência do seu servidor; Cada uma dessas 6 conexões pode solicitar simultaneamente um recurso, agindo como 6 clientes diferentes do ponto de vista do servidor.

    
por 25.11.2011 / 18:26
0

mpm_prefork responderá apenas a uma conexão. Se você quiser que o apache ofereça mais de uma conexão por processo, você precisará usar um MPM multi-thread como mpm_worker .

O navegador moderno usa pipeline (várias conexões simultâneas) e mantém ativo (solicitações serializadas na mesma conexão) para aumentar a taxa de transferência e a eficiência da rede e diminuir a latência. Por exemplo, o Mozilla Firefox pode ser configurado alterando network.http.pipelining e network.http.pipelining.maxrequests em about:config

    
por 25.11.2011 / 19:35