envoy Fix für das Ausliefern großer Dateien aus dem Backend / Timeouts / abgebrochene Downloads

Kunden haben sich darüber beschwert, dass sie keine großen Dateien von unseren Webseiten (z.B. PiDoctor auf PiCockpit.com) herunterladen konnten.

Zunächst konnte ich das Problem lokal nicht reproduzieren, die Dateien schienen problemlos heruntergeladen zu werden.

Nach weiteren Untersuchungen stellte ich fest, dass die Downloads nach einer bestimmten Zeit abbrachen - abhängig von der Download-Geschwindigkeit, so dass bei einigen Kunden die Downloads fehlschlugen.

Da ich eine einigermaßen schnelle Verbindung habe, würden die Downloads bei mir funktionieren.

Die Zeitüberschreitung stellt sich heraus als 15 Sekunden.

Eine Debug-Meldung von envoy könnte etwa so aussehen:

penvoyage-athena-envoy | [2020-06-27 16:18:57.492][21][debug][router] [source/common/router/router.cc:681] [C37][S12388594366303232323] upstream timeout


Weitere Nachforschungen in der Envoy-Dokumentation ergaben, dass es tatsächlich eine solche Standardzeitüberschreitung gab:

Bild

Daher muss die Zeitüberschreitung für die jeweilige Route auf 0s gesetzt werden:

Bild

oder eine mit mehr Kontext:

Bild

im Klartext:

route_config:
   virtuelle_hosts:
   - Name: Backend
     Domänen: ["*"]
     Routen:
     - übereinstimmen: { prefix: "/.well-known/acme-challenge/"}
       Route:
         cluster: ziel_certbot
         Timeout: 0s

Stellen Sie diese Zeitüberschreitung pro Route ein, um große Downloads ohne Zeitüberschreitungen zu ermöglichen. Halten Sie Ihre Kunden bei Laune, und sie werden Sie bei Laune halten.

Ref