Introduction

Azure Functions Premium plan offers pre-warmed instances to eliminate cold starts. When warm instances aren't properly configured or functioning, applications still experience cold start latency despite being on Premium plan.

Symptoms

Cold starts despite Premium plan:

```bash # Premium plan function still shows cold start $ curl -w "Time: %{time_total}s\n" https://my-premium-function.azurewebsites.net/api/http

Time: 5.234s # Should be < 500ms with warm instances ```

Pre-warmed instances not running:

```bash # Check instance count az functionapp plan show \ --name my-premium-plan \ --resource-group my-rg \ --query '{MinInstances:sku.capacity,CurrentInstances:numberOfWorkers}'

# MinInstances shows 0 ```

Scale-out not working:

```bash # Only 1 instance running despite high load az functionapp plan show \ --name my-premium-plan \ --query 'numberOfWorkers'

# Returns 1 despite high request rate ```

Common Causes

  1. 1.Min instances set to 0 - No pre-warmed instances configured
  2. 2.Plan configuration error - Wrong SKU or tier
  3. 3.Always Ready disabled - Function-specific warm instances not enabled
  4. 4.Scale-out limit reached - Max burst instances too low
  5. 5.Zone redundancy issues - Availability zone conflicts
  6. 6.App settings misconfigured - Wrong configuration values
  7. 7.Runtime issues - Function crashes before completing warmup

Step-by-Step Fix

  1. 1.Check logs for specific error messages
  2. 2.Verify configuration settings
  3. 3.Test network connectivity
  4. 4.Review recent changes
  5. 5.Apply corrective action
  6. 6.Verify the fix

Step 1: Check Premium Plan Configuration

```bash # Get plan details az functionapp plan show \ --name my-premium-plan \ --resource-group my-rg \ --query '{SKU:sku.tier,Size:sku.name,MinInstances:sku.capacity,MaxBurst:maximumElasticWorkerCount,CurrentWorkers:numberOfWorkers}'

# SKU should be: ElasticPremium # MinInstances should be > 0 ```

Step 2: Set Minimum Instances

```bash # Set pre-warmed instances az functionapp plan update \ --name my-premium-plan \ --resource-group my-rg \ --min-instances 2

# This ensures 2 instances always warm # Use enough instances for your baseline load ```

Step 3: Configure Always Ready for Specific Functions

```bash # Set always ready for specific function az functionapp config appsettings set \ --name my-function \ --resource-group my-rg \ --settings "AzureWebJobs.HttpTrigger.Warmup.State=AlwaysReady"

# Or for all functions az functionapp config appsettings set \ --name my-function \ --resource-group my-rg \ --settings WEBSITE_ALWAYS_READY=1 ```

Step 4: Configure Maximum Burst

```bash # Set maximum burst instances az functionapp plan update \ --name my-premium-plan \ --resource-group my-rg \ --max-burst 20

# Max burst = additional instances beyond minimum # Total possible = min-instances + max-burst ```

Step 5: Enable Runtime Scale Monitoring

```bash # Enable scale monitoring az functionapp config appsettings set \ --name my-function \ --resource-group my-rg \ --settings FUNCTIONS_WORKER_RUNTIME_SCALE_MONITORING_ENABLED=1

# View in Azure Portal: # Function App > Scale Out > Runtime Scale Monitoring ```

Step 6: Check Zone Redundancy

```bash # If zone redundancy enabled, it may affect warm instances az functionapp plan show \ --name my-premium-plan \ --resource-group my-rg \ --query 'zoneRedundant'

# Zone redundant plans spread instances across zones # Minimum instances per zone = ceil(min_instances / num_zones)

# Disable zone redundancy if not needed az functionapp plan update \ --name my-premium-plan \ --resource-group my-rg \ --zone-redundant false ```

Step 7: Verify Function Warmup Trigger

```csharp // Ensure warmup trigger is properly configured [FunctionName("Warmup")] public static void Warmup( [WarmupTrigger] object warmupContext, ILogger log) { log.LogInformation("Function app warming up"); // Initialize dependencies here }

// host.json { "version": "2.0", "extensions": { "warmup": { "enabled": true } } } ```

Step 8: Monitor Instance Count

```bash # Monitor instance count over time az monitor metrics list \ --resource /subscriptions/SUB/resourceGroups/my-rg/providers/Microsoft.Web/serverFarms/my-premium-plan \ --metric "WorkersTotal" \ --interval PT1H

# Should show minimum >= min-instances ```

Step 9: Check for App Crashes

```bash # Check function app health az monitor activity-log list \ --resource-group my-rg \ --caller "my-function" \ --query "[?contains(operationName.value, 'restart')].{Time:eventTimestamp,Message:properties.statusMessage}"

# Frequent restarts prevent warm instances from staying ready ```

Step 10: Review Cost vs. Performance

```bash # Premium plan costs: # - EP1: 1 vCPU, 3.5GB RAM ~$150/month + per-execution # - EP2: 2 vCPU, 7GB RAM ~$300/month # - EP3: 4 vCPU, 14GB RAM ~$600/month

# Min instances multiply base cost # 2 min instances on EP1 = 2x base cost

# Estimate your optimal configuration: # Min instances = baseline concurrent requests / requests per instance # Max burst = peak concurrent requests - min instances ```

Premium Plan Configuration Reference

SettingRecommendedNotes
Min Instances1-3Baseline capacity
Max Burst10-20Peak capacity
Zone RedundantFalse (unless HA required)Doubles min instances
Always ReadyTruePer-function warmup

Verification

```bash # After configuration, test cold starts # First request (should be warm) curl -w "Time: %{time_total}s\n" -o /dev/null -s https://my-function.azurewebsites.net/api/http

# Should be < 500ms

# Check running instances az functionapp plan show \ --name my-premium-plan \ --resource-group my-rg \ --query 'numberOfWorkers'

# Should equal or exceed min-instances

# Monitor over time az monitor metrics list \ --resource /subscriptions/SUB/resourceGroups/my-rg/providers/Microsoft.Web/serverFarms/my-premium-plan \ --metric "WorkersTotal" \ --interval PT5M ```

  • [Fix Azure Functions Consumption Cold Start](/articles/fix-azure-functions-consumption-cold-start)
  • [Fix Azure Functions Memory Limit Exceeded](/articles/fix-azure-functions-memory-limit-exceeded)
  • [Fix Azure Functions Durable Orchestration Timeout](/articles/fix-azure-functions-durable-orchestration-timeout)
  • [Technical troubleshooting: Fix Azure Aks Pod Crashloopbackoff Issue in Azure](azure-aks-pod-crashloopbackoff)
  • [Technical troubleshooting: Fix Azure Api Management Policy Expression Runtime](azure-api-management-policy-expression-runtime-error)
  • [Technical troubleshooting: Fix Azure App Configuration Feature Flag Not Refre](azure-app-configuration-feature-flag-not-refreshing)
  • [Technical troubleshooting: Fix Azure App Service 503 Always On Disabled Issue](azure-app-service-503-always-on-disabled)
  • [Technical troubleshooting: Fix Azure Application Gateway Err SSL Unrecognized](azure-application-gateway-err-ssl-unrecognized-name-alert)

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "Fix Azure Functions Premium Instance Warmup Issues", "description": "Troubleshoot Azure Functions Premium warm instance issues. Configure pre-warmed instances and verify plan settings.", "url": "https://www.fixwikihub.com/fix-azure-functions-premium-instance-warmup", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2026-04-02T20:39:44.651Z", "dateModified": "2026-04-02T20:39:44.651Z" } </script>