O Apache KeepAliveTimeout
existe para fechar uma conexão keep-alive se uma nova solicitação não for emitida dentro de um determinado período de tempo. Desde que o usuário não feche seu navegador / guia, esse tempo limite (geralmente de 5 a 15 segundos) é o que acaba fechando a maioria das conexões keep-alive e evita que os recursos do servidor sejam desperdiçados mantendo-as indefinidamente.
Agora a MaxKeepAliveRequests
diretiva coloca um limite no número de solicitações HTTP que uma única conexão TCP (deixada em aberto devido a KeepAlive
) atenderá. Definir isso para 0
significa que um número ilimitado de solicitações é permitido.
Por que você configuraria isso para algo além de "ilimitado"? Desde que um cliente ainda esteja solicitando ativamente, que mal há em deixá-lo acontecer na mesma conexão keep-alive? Quando o limite é atingido, os pedidos ainda chegam, apenas em uma nova conexão.
Do meu ponto de vista, não faz sentido limitar isso. o que estou perdendo?
fonte
Em parte, para impedir que um único usuário monopolize todos os slots de conexão. Sem limite, um cliente mal-intencionado ou mal escrito pode assumir todas as conexões disponíveis e mantê-las para sempre. Essa não é uma grande mitigação para isso, no entanto, comparada a algo como um limite de conexão por IP.
Principalmente balanceamento de carga, mas especificamente com relação à manutenção. Se você deseja colocar um servidor offline, reduza-o para 0 conexões, mas permita que as conexões existentes sejam concluídas por um certo período de tempo. A limitação do número de solicitações de manutenção de atividade significa que, eventualmente, os usuários criarão normalmente uma nova conexão e serão movidos para um novo servidor de back-end. Provavelmente, alguma maneira de sinalizar para o servidor que ele deveria parar de aceitar o keepalives por completo durante o processo de drenagem seria ainda melhor, mas até onde eu sei, esse recurso não existe.
fonte