Fase-time-outs en de totale deadline van een proxyverzoek
Scheid limieten per fase van het totale tijdbudget van een bewerking via een proxy, inclusief nieuwe pogingen en het lezen van de respons.
Time-outs voor verbinding en lezen beperken bepaalde wachttijden. Ze begrenzen niet noodzakelijk een volledige bewerking via een proxy, die ook wachten in de wachtrij, DNS, CONNECT, TLS, omleidingen, nieuwe pogingen en het lezen van de respons kan omvatten.
| Limiet | Bereik |
|---|---|
| Time-out voor verbinding | Opzetten van de verbinding volgens de definitie van de client |
| Time-out voor leesinactiviteit | Een wachttijd zonder de verwachte datavooruitgang |
| Totale deadline | Toegestane duur van de volledige bewerking |
Begin bij het budget van de bewerking
Gebruik de gedocumenteerde totale deadline of het annuleringsmechanisme van de client waar beschikbaar, samen met de faselimieten. HTTPX scheidt wachttijden voor pool, verbinding, lezen en schrijven. Requests stelt dat zijn time-out geen limiet voor een volledige download is. curl biedt een totale overdrachtstime-out.
Bijvoorbeeld: een taak van twintig seconden besteedt twee seconden in de wachtrij, drie aan het opbouwen van zijn route en zes aan een mislukte uitwisseling. De volgende poging heeft nog ongeveer negen seconden. Elke nieuwe poging verse twintig seconden geven zou het oorspronkelijke budget weggooien.
Gebruik een monotone klok voor het bijhouden van verstreken tijd. Draag een absolute deadline of resterende duur door de lagen die het werk bezitten. Als een omringend annuleringsmechanisme het vereiste bereik niet kan afdwingen, maak die beperking dan expliciet.
Neem de body en het opruimen mee
Een methode die na de headers terugkeert, kan het lezen van de body buiten zijn deadline laten. Bepaal of het budget het opzetten, een volledige eindige download of een langdurige stream met aparte levensvatbaarheidsregels dekt. Een modern .NET-voorbeeld voor het annuleren van headers en body draagt één token door beide fasen.
Laat tijd over om responsen te sluiten en de annulering te voltooien voordat een volgende poging poolcapaciteit neemt. Registreer de mislukte fase en de verstreken tijd; herhaalde lezingen met vooruitgang kunnen inactiviteitslimieten vervullen terwijl de totale taak te lang duurt.
De upstream-deadline van een gateway hoort bij die gateway. Zodra die 504 teruggeeft, kan ongebruikt clientbudget de voltooide poging niet verlengen. Houd elke timer aan zijn eigenaar gekoppeld wanneer u bepaalt welke instelling gecorrigeerd moet worden.