Des valeurs de délai HTTP POST sensibles à utiliser lors de l'émission de demandes par programme?

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

  •  05-07-2019
  •  | 
  •  

Question

Lors de l'émission par programme de requêtes HTTP POST, quelles valeurs de dépassement de délai seraient judicieuses?

Dans mon cas, je cherche à définir des valeurs de délai d'attente "raisonnables" lors de la création de requêtes POST en PHP. Toutefois, cela s'applique à toutes les langues.

Je dois pouvoir émettre un ensemble de demandes, chacune vers une URL spécifiée par l'utilisateur. Si j’ai besoin de traiter les demandes de manière consécutive et non simultanée, je voudrais spécifier un délai raisonnable au-delà duquel une demande est réputée avoir expiré.

PHP le délai d'attente par défaut est de 60 secondes. Cela semble un temps d’attente inutilement long avant de décider qu’une demande ne sera pas complétée.

S'agissant de demandes POST, elles doivent être traitées rapidement. Aucune donnée ne doit être extraite ni renvoyée, contrairement à une demande GET.

Nous devrions pouvoir supposer, la plupart du temps , que l'absence de réponse à une demande dans un délai de X secondes signifie qu'il est improbable que l'hôte envoie une réponse dans un délai raisonnable pour les valeurs. de X significativement inférieur à 60.

Les hôtes mettent rarement plus de 60 secondes pour répondre à une simple requête POST. Est-ce qu'ils prennent même rarement plus de 10 secondes? 5 secondes?

Quelles pourraient être les valeurs sensibles de X dans la pratique? Des justifications accompagnant les suggestions seraient extrêmement bénéfiques.

Était-ce utile?

La solution

Je recommanderais la mise en place d'un test, car il y a trop de facteurs en jeu pour donner une valeur qui sera toujours raisonnable.

Une demande POST envoie des données à traiter. Combien de temps dure le traitement? Ce sera spécifique à l'application / aux données.

Où se trouve l'hôte? L'utilisateur fournit l'URL, donc ce sera inconnu. Nous ne pouvons pas savoir à quoi ressemble le trafic entre votre application et l'hôte. Nous ne pouvons pas connaître la charge du serveur de l'hôte.

Essentiellement, il n’existe pas de délai d’attente universel raisonnable. Vous devez utiliser votre meilleur jugement en fonction de vos besoins spécifiques. Configurez un test et utilisez-le pour déterminer vos limites.

Autres conseils

La plupart des bibliothèques ont un délai de connexion et un délai de lecture. C'est-à-dire que le délai d'attente entre la tentative de connexion au serveur distant et le délai d'attente après l'envoi de la demande doit attendre une réponse.

S'il s'agit d'un service Web local, je définirais le délai d'expiration de la connexion sur 1 seconde ou moins si votre bibliothèque le prend en charge. Si le service distant auquel vous vous connectez est indisponible, à mon humble avis, il vaut mieux renvoyer immédiatement une réponse à l'utilisateur que d'autoriser tous vos threads de travail à se bloquer sur ce service distant, ce qui entraînerait d'autres erreurs en amont.

En ce qui concerne le délai de lecture, c'est plus compliqué, vous devez le réduire, afin de ne pas épuiser votre bassin de travailleurs qui attendent le retour du service distant, mais vous ne souhaitez pas qu'il soit aussi bas. qu'il ferme la connexion avant de lire une réponse. C’est quelque chose que vous devrez tester, puis suivre en tant que métrique lorsque votre système est en production.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top