Tempos limite do Apache e retransmissão TCP

1

A documentação da diretiva de tempo limite no apache afirma que:

When writing data to the client, the length of time to wait for an acknowledgement of a packet if the send buffer is full.

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

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

curl: (18) transfer closed with XXXXXX bytes remaining to read

e estou tentando determinar o motivo exato.

Tendo tomado um rastreio 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 ser fechado). Isto está acontecendo para 2 tipos de arquivos que são freqüentemente baixados: arquivos binários grandes (100 mb mb mp4) e pequenos arquivos de texto (~ 10kb). Para os arquivos grandes, há uma mensagem de log do apache:

The timeout specified has expired: [client :] AH01581: Timeout while writing data for URI /xxxx/xxxx/xxxx/ to the client

Meu palpite atual é que isso é apenas congestionamento da rede, já que as falhas tendem a se acumular em determinados momentos, mas eu gostaria de defini-lo ainda mais, se possível.

Configuração:

CentOS 6.6

Apache 2.4.16

Onda 7.19.7

    
por Bryan Solan 09.10.2015 / 11:48

0 respostas