correzione di envoy per servire grandi file dal backend / timeout / download interrotti

I clienti si lamentavano di non poter scaricare grandi file dai nostri siti web (per esempio PiDoctor su PiCockpit.com).

Inizialmente non ho potuto replicare il problema localmente, i file sembravano scaricare bene.

Dopo ulteriori indagini ho determinato che i download si interrompevano dopo un certo tempo - a seconda della velocità di download, quindi, per alcuni clienti i download fallivano.

Poiché ho una connessione ragionevolmente veloce, per me i download funzionano.

Il timeout risulta essere 15 secondi.

Un messaggio di debug da envoy potrebbe essere simile a questo:

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


Ulteriori indagini con la documentazione di Envoy hanno mostrato che, in effetti, c'era un tale timeout predefinito:

immagine

Quindi il timeout deve essere impostato a 0s per la rispettiva rotta:

immagine

o uno con più contesto:

immagine

in chiaro:

route_config:
   virtual_hosts:
   - nome: backend
     domini: ["*"]
     percorsi:
     - match: { prefix: "/.well-known/acme-challenge/"}
       percorso:
         cluster: target_certbot
         timeout: 0s

Impostate questo timeout per rotta per permettere grandi download senza timeout. Fate felici i vostri clienti e loro faranno felici voi.

Rif