You need to prevent the exception. What should you do?

November 21, 2021 by Admin

You are developing an Azure function that connects to an Azure SQL Database instance. The function is triggered by an Azure Storage queue.

You receive reports of numerous System.InvalidOperationExceptions with the following message:

“Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.”

You need to prevent the exception.

What should you do?

  • In the host.json file, decrease the value of the batchSize option
  • Convert the trigger to Azure Event Hub
  • Convert the Azure Function to the Premium plan
  • In the function.json file, change the value of the type option to queueScaling

With the Premium plan the max outbound connections per instance is unbounded compared to the 600 active (1200 total) in a Consumption plan.

Note: The number of available connections is limited partly because a function app runs in a sandbox environment. One of the restrictions that the sandbox imposes on your code is a limit on the number of outbound connections, which is currently 600 active (1,200 total) connections per instance. When you reach this limit, the functions runtime writes the following message to the logs: Host thresholds exceeded: Connections.

Leave a Reply