Tempo limite do Apache e retransmissão TCP

Tempo limite do Apache e retransmissão TCP

Odocumentação para a diretiva timeoutno apache afirma que:

Ao gravar dados no cliente, o tempo de espera pela confirmação de um pacote se o buffer de envio estiver cheio.

Mas se a pilha TCP não receber um ACK, ela reenviará o pacote. Então, como essas duas coisas interagem? O tempo limite do apache define um limite geral de novas tentativas antes de interromper a conexão?

O contexto é uma situação em que curl pulls falham periodicamente com o erro:

curl: (18) transferência fechada com XXXXXX bytes restantes para leitura

e estou tentando determinar o motivo exato.

Tendo feito um rastreamento do Wireshark no cliente e no servidor, parece que o servidor (apache) está encerrando a sessão prematuramente por algum motivo (portanto, não um firewall ou outro forçando-o a fechar). Isso está acontecendo com dois tipos de arquivos que são baixados com frequência: arquivos binários grandes (100 MB MP4) e arquivos de texto pequenos (~ 10 KB). Para os arquivos grandes, há uma mensagem de log do Apache:

O tempo limite especificado expirou: [client:] AH01581: Tempo limite ao gravar dados para URI /xxxx/xxxx/xxxx/ no cliente

Meu melhor palpite atual é que isso é apenas congestionamento de rede, já que as falhas tendem a se agrupar em determinados momentos, mas gostaria de definir isso ainda mais, se possível.

Configuração:

CentOS 6.6

Apache 2.4.16

Enrolar 7.19.7

informação relacionada