Intermittent EAI_AGAIN errors from Azure Functions Flex Consumption to private Azure SQL
We are investigating intermittent DNS resolution failures from an Azure Function App connecting to Azure SQL through a private endpoint.
Environment:
- Azure Functions Flex Consumption, Linux, Node.js 24.
- VNet integration with Azure-provided DNS.
- Azure SQL private endpoint and linked private DNS zone.
- Managed identity authentication.
Symptoms:
- Some background executions fail with getaddrinfo EAI_AGAIN before establishing a SQL connection.
- Successful and failed executions have occurred on the same worker instance.
- After one recent failure, the next scheduled execution succeeded five minutes later on a different worker. This does not establish the exact duration of the DNS problem.
- We also observed a separate Functions host error while accessing Blob Storage: “Resource temporarily unavailable” after multiple retries. We have not established whether the Storage and SQL failures share a cause.
Checks completed:
- The SQL private DNS A record matches the private endpoint IP.
- The private endpoint is approved and successfully provisioned.
- The private DNS zone is linked to the integrated VNet.
- No custom DNS servers or application DNS overrides are configured.
- The integration subnet has no associated NSG or custom route table.
- No Azure DNS Private Resolver or forwarding ruleset resources were found in the subscription.
Mitigation: We added one additional DNS lookup after 250 ms for EAI_AGAIN, within the original 15-second connection deadline. This does not retry SQL statements or application actions.
A subsequent incident still failed after the additional lookup, so the issue remains unresolved.
Questions:
- Are there known issues involving intermittent DNS resolution from Linux Flex Consumption workers to private endpoints?
- What supported, read-only diagnostics can capture the worker’s DNS behavior during a failure?
- Can a Microsoft engineer correlate the SQL and Storage failures with platform telemetry? An existing Azure support case contains detailed timestamps and diagnostic evidence. Resource names, instance identifiers and additional logs can be shared privately with Microsoft Support.
An existing Azure support case contains detailed timestamps and diagnostic evidence. Resource names, instance identifiers and additional logs can be shared privately with Microsoft Support.