Symptoms
- Cluster start fails with termination reasons like
AZURE_QUOTA_EXCEEDED_EXCEPTION,CLOUD_PROVIDER_LAUNCH_FAILUREorCLOUD_PROVIDER_RESOURCE_STOCKOUT. - Clusters start with fewer workers than requested and jobs run slowly.
- Spot-based clusters lose workers repeatedly.
1. Read the reason
databricks clusters events <cluster-id> --output json | jq '.events[] | select(.type=="TERMINATING" or .type=="FAILED_TO_EXPAND_DISK" or .type=="NODES_LOST") | {type, details}'
The details.reason.parameters often contain the Azure error message, including the VM family and the limit.
2. Quota exceeded
az vm list-usage -l westeurope -o table | grep -Ei "family|Total Regional"
Each VM family (for example Standard EDSv5 Family vCPUs) has its own limit, plus the total regional vCPU limit. Peaks from many jobs starting together hit them.
Quick fixes:
- Switch some jobs to a different VM family with spare quota (e.g. from
Standard_E8ds_v5toStandard_E8as_v5orStandard_D16ds_v5). - Reduce
max_workerson non-critical jobs; stagger schedules.
Then request more quota (portal → Quotas → Compute, or a support request). Small increases are often approved automatically.
3. Capacity stockout (not your quota)
The region temporarily has no capacity for that VM size.
- Try another size in the same family or another family.
- Use multiple instance types via pools or fleet options where available, so the cluster can use whatever is available.
- Serverless jobs avoid VM procurement in your subscription entirely — a good escape hatch for critical workloads.
4. Spot problems
"azure_attributes": { "availability": "SPOT_WITH_FALLBACK_AZURE", "first_on_demand": 1, "spot_bid_max_price": -1 }
SPOT_WITH_FALLBACK_AZUREfalls back to on-demand when spot isn't available.first_on_demand: 1keeps the driver on on-demand capacity so an eviction doesn't kill the job.- For SLA-critical jobs, use on-demand workers.
5. Get tonight's critical jobs through
- Pause non-critical schedules.
- Edit critical job clusters to a node type with available quota/capacity (or serverless).
- Re-run failed runs (
databricks jobs repair-run <run-id> --rerun-all-failed-tasks).
Tip
Keep a documented alternate node type for each critical job (tested once), so the switch during an incident is a one-line change in the bundle or job definition.
Prevent it next time
- Quota headroom of ~30% above observed peak per VM family; review monthly.
- Cluster policies that limit max workers per job.
- Alerts on cluster launch failures from job run results or system tables (
system.compute/system.lakeflowtables).