envoy fix for serving big files from the backend / timeouts / aborted downloads
Customers were complaining about not being able to download big files from our websites (e.g. PiDoctor on PiCockpit.com).
Initially I could not replicate the issue locally, the files seemed to be downloading fine.
After further investigation I determined that the downloads were cutting out after a certain time – depending on your download speed, thus, for some customers the downloads would fail.
Because I have a reasonably fast connection, for me the downloads would work.
The timeout turns out to be 15 seconds.
A debug message from envoy might look something like this:
penvoyage-athena-envoy | [2020-06-27 16:18:57.492][21][debug][router] [source/common/router/router.cc:681] [C37][S12388594366303232323] upstream timeout
Further investigation with the Envoy documentation showed that, indeed, there was such a default timeout:
Therefore the timeout needs to be set to 0s for the respective route:
or one with more context:
in clear text:
route_config:
virtual_hosts:
– name: backend
domains: [“*”]
routes:
– match: { prefix: “/.well-known/acme-challenge/”}
route:
cluster: target_certbot
timeout: 0s
Set this per route timeout to allow big downloads without timeouts. Keep your customers happy, and they will keep you happy.