valores de tempo limite Sensible HTTP POST para usar quando programaticamente emissão de pedidos?

StackOverflow https://stackoverflow.com/questions/171099

  •  05-07-2019
  •  | 
  •  

Pergunta

Quando programaticamente emissão de pedidos HTTP POST, o tempo limite de valores seria sensato?

No meu caso, eu estou olhando para definir os valores de tempo limite 'sensíveis' ao fazer solicitações POST em PHP, porém isso se aplica a qualquer linguagem.

Eu preciso ser capaz de emitir um conjunto de pedidos, cada um para um URL especificado pelo usuário. Se eu fizer necessidade de processar pedidos consecutivamente em vez de ao mesmo tempo, eu gostaria de especificar um tempo razoável para além do qual um pedido é considerado como tendo esgotado.

O PHP padrão limite do soquete é de 60 segundos. Isto parece um desnecessariamente muito tempo para esperar antes de decidir um pedido não vai ser concluída.

Como estes são POST solicita que deveriam concluir rapidamente -. Não há dados a serem recuperados e devolvidos como com um pedido GET

Devemos ser capazes de assumir, na maioria das vezes , que a falta de emitir uma resposta a um pedido dentro de X segundos significa que o host é pouco provável que emitir uma resposta dentro de um prazo razoável para valores de X significativamente menos de 60.

Certamente anfitriões raramente levam mais de 60 segundos para responder a um pedido POST simples. Será que eles ainda raramente levam mais de 10 segundos? 5 segundos?

O que poderia ser valores sensíveis para X na prática? Justificativas que acompanham sugestões seria extremamente benéfico.

Foi útil?

Solução

Eu recomendaria a criação de um teste, pois há muitos fatores envolvidos para dar um valor que será sempre sensata.

pedido

A POST envia os dados a serem processados. Quanto tempo com a tomada de processamento? Este será application / específico de dados.

Onde está o anfitrião? O usuário está fornecendo o URL, de modo que será desconhecido. Não podemos saber o que o tráfego é como entre seu aplicativo e o anfitrião. Não podemos saber a carga do servidor do host.

Essencialmente, não há tempo limite sensato universal. Você tem que usar o seu próprio melhor julgamento com base em suas necessidades específicas. Configurar um teste e usar isso para determinar os seus limites.

Outras dicas

A maioria das bibliotecas têm um tempo limite de conexão e um tempo limite de leitura. Ou seja, o tempo limite entre tentar se conectar ao servidor remoto, e o tempo limite após o envio do pedido, que eles devem esperar por uma resposta.

Se este é um serviço web local, gostaria de definir o tempo limite de conexão baixa, 1 segundo, ou menos, se suas sustentações biblioteca de TI. Se o serviço remoto que está a ligar é IMHO indisponíveis seu melhor para retornar uma resposta para o usuário imediatamente, do que permitir que todos os seus segmentos de trabalho para o bloco em que o serviço remoto, fazendo com que outros erros montante.

Quanto ao tempo limite de leitura, que é mais complicado, você precisa que ele seja baixo, então você não esgotam o conjunto de trabalhadores que estão à espera para o serviço remoto para voltar, mas você também não quer que ele tão baixa que fecha a conexão antes de ler uma resposta. Isso é algo que você vai ter que testar, em seguida, acompanhar como uma métrica quando o sistema está em produção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top