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:
Quindi il timeout deve essere impostato a 0s per la rispettiva rotta:
o uno con più contesto:
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.