2

We have an embedded device, which connects to an Azure Function and gets a 10MB file. During the file transfer the connection is reset (TCP RST) or we see, that Azure is no longer sending data to the device, even though the device is capable of receiving data. It normally happens after minutes 5-10 minutes.

Using WireShark we are able to see, that even though the device sends "TCP Window Update", where "Win" size is more than the size of 1 TCP package, no new data is received. As a consequence, the embedded device times out waiting for data (set to 30 seconds i the test), and the embedded device sends an "ACK" and "FIN".

If the same device fetches the file from a Linux server, it works.

We know of "idle timeouts" of Azure Load Balancer, and "FunctionTimeout" if an Azure Function. But what are we missing?

The Azure Function is running on a WebApp plan, with always on enabled.

Best regards Martin

  • Instead of putting all this effort towards crafting a long-running function i'd rather amend the code to pull from blob storage instead. You can still use the Function and return HTTP 302 to the blob storage URL + SAS token. You could then also switch to a Consumption plan and save $40 or so. – evilSnobu Dec 12 '19 at 20:42
  • Hi evilSnobu. Thanks for your suggestion. I have tried to move the file to blob storage. It didnt help a lot. I think I am seeing issues with the Load Balancer. Download from other servers outside Microsoft works... – Martin Jørgensen Dec 19 '19 at 07:28

0 Answers0