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:
Daher muss die Zeitüberschreitung für die jeweilige Route auf 0s gesetzt werden:
oder eine mit mehr Kontext:
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.