Uma resposta que entrega alguns bytes de vez em quando pode permanecer dentro de cada limite de inatividade de leitura enquanto leva muito mais tempo no total. Um tempo limite de leitura não precisa medir toda a duração da transferência.

Escolha a política de acordo com a carga de trabalho. Um arquivo finito precisa de um orçamento de conclusão; um fluxo de eventos pode continuar legitimamente por horas e ficar silencioso às vezes.

Meça o progresso útil

Para um download de arquivo, mantenha um prazo geral e considere os controles de baixa velocidade ou de progresso suportados pelo cliente. Defina o intervalo e a quantidade de dados úteis. Um byte de batimento pode mostrar atividade sem fazer progresso real rumo à conclusão do arquivo.

Mantenha a configuração do túnel separada da transferência do corpo. Esperar que CONNECT seja concluído e receber um corpo de destino lento são estágios diferentes com evidências diferentes.

Consuma ou feche a resposta em cada caminho de saída. Deixar um fluxo lento aberto pode fazer a próxima solicitação esperar pela capacidade do pool, o que produz outro tempo limite por um motivo diferente.

Se a duração observada exceder a política pretendida, inspecione a versão exata do cliente e o loop de leitura. Um temporizador de inatividade correto, o comportamento de um loop personalizado e um bug de implementação exigem cada um uma correção diferente.

Artigos relacionados