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:

image

Therefore the timeout needs to be set to 0s for the respective route:

image

or one with more context:

image

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.

Ref