Skip to content

Playbooks

Symptom-oriented troubleshooting guides for Azure App Service, with platform applicability stated in each playbook.

Each playbook follows a hypothesis-driven structure: start from the symptom, list competing hypotheses, collect evidence, validate or disprove, and identify the root cause.

The detector categories map closely to the playbooks below: Availability and Performance to the startup and performance playbooks, Networking to the outbound playbooks, and Configuration and Management plus Deployment to deployment failures. Open the detector hub first so Azure can surface the most likely detectors, then pick the matching playbook here for hypothesis-driven validation.

Choose a Hosting Mode

Hosting mode Entry path
Windows code Route by symptom through Windows Playbooks and Evidence.
Windows custom container Begin with Windows Container Health Probes; follow another Windows route only when its runtime model matches.
Linux code or custom container Route through Performance, Outbound / Network, or Startup / Availability; keep Linux paths and container settings separate from Windows guidance.

Windows Playbooks and Evidence

Symptom or task Existing guide
IIS startup, handler, or deployed web.config failure Windows IIS and web.config Startup
Windows custom container never becomes healthy Windows Container Health Probes
Need Windows Kudu tool selection or a platform tour Windows Kudu Diagnostics and Kudu on Windows
w3wp memory growth, recycle, or worker degradation Windows Memory Pressure and Worker Recycling
D:\home or D:\local quota and filesystem symptoms Windows Filesystem Quotas
Windows Java SE 500.121 or httpPlatformHandler timeout Windows httpPlatformHandler KQL Pack and Windows Java httpPlatformHandler Timeout Lab

The dedicated Windows set covers the symptoms above. Cross-platform deployment investigation also includes Deployment Failures, Missing wwwroot Files and 404, the Missing wwwroot Content Lab, and the ZIP Deploy File Lock Lab. Other playbooks commonly use Linux examples; reuse their diagnostic method only after translating evidence through the correct hosting-mode guide.

graph TD
    A[Reported symptom] --> B{Primary symptom area}
    B --> C[Performance]
    B --> D[Outbound or Network]
    B --> E[Startup or Availability]
    C --> F[Slow response low CPU]
    C --> G[Memory pressure]
    C --> H[Intermittent 5xx]
    C --> I[No space left on device]
    C --> J[Slow start / cold start]
    D --> K[SNAT vs app issue]
    D --> L[DNS resolution VNet]
    D --> M[Private endpoint and DNS routing]
    E --> N[Container HTTP pings]
    E --> O[Warm-up vs health check]
    E --> P[Slot swap warm-up failure]
    E --> Q[Deployment ok but startup fails]
    E --> R[Failed to forward request]
    E --> S[Slot swap config drift]

Performance

Playbook Symptom
Performance Degradation Slow response times, latency spikes, CPU or memory stress
Tail Latency and Matched Baselines Users report long delays while averages change little; compare matched request populations
Slow Response but Low CPU High latency with CPU below saturation
Memory Pressure & Worker Degradation Gradual slowdown without CPU spikes
Intermittent 5xx Under Load Sporadic server errors during traffic bursts
No Space Left on Device Disk full errors from /home or /tmp exhaustion
Slow Start / Cold Start vs Regression First request slow after deploy or idle — cold start or real problem?

Core Platform Playbooks

Playbook Symptom
Deployment Failures Failed deployments, slot issues, or swap failures
SCM Client DNS and HTTP Failures Kudu fails to open from one or several clients; distinguish name resolution, transport, HTTP rules and authentication
Private Endpoint and Access Restriction Decisions PE approval without connectivity, unexpected allowlist exclusions, or safe private-only cutover
Production ARM Configuration HTTP 400 Production configuration update returns ARM HTTP 400 while a comparable staging-slot request succeeds
Missing wwwroot Files and 404 Expected static file absent from served content, later 404, actor and loss time unknown
App Startup Failures Application or container never becomes ready
mTLS Failures Missing client certificate headers, failed validation, or outbound certificate loading issues
SSL Certificate Issues Custom domain TLS binding, renewal, or hostname mismatch problems
Authentication Failures Easy Auth, Entra ID, or identity-related sign-in failures
CD RBAC Role Assignment Conflict RoleAssignmentExists on Deployment Center reconnect with managed-identity ACR pulls

Process lifecycle and missing work

If work appears missing near a maintenance event, crash, configured restart, scale event, or deployment, use Process Lifecycle and In-Flight Work. It provides the shared symptom-first timeline and evidence method for these competing causes. A separate playbook would duplicate that method before the initiating lifecycle path is known.

Outbound / Network

Playbook Symptom
SNAT or Application Issue? Intermittent outbound connection failures
DNS Resolution (VNet) Name resolution failures in VNet-integrated apps
Private Endpoint / DNS Confusion Unreachable dependencies despite Private Endpoint

Startup / Availability

Playbook Symptom
Container Didn't Respond to HTTP Pings Site fails to start after container launch
Warm-up vs Health Check Confusion between startup probing and health checks
Slot Swap Failed During Warm-up Swap fails due to warm-up timeout
Deployment Succeeded but Startup Failed Deploy green but app down — startup command or artifact mismatch
Failed to Forward Request Platform proxy cannot reach app container at runtime
Slot Swap Config Drift / Restart Race Swap succeeds but production restarts or config breaks
First Static-Asset Request Returns HTTP 500 After Deployment on Windows First static-asset request after deployment is 500, but the same request reloads as 200
Windows Slot-Swap First-Request Latency First business request is slow after a successful Windows slot swap
Windows Slot-Swap Binding Drift and Worker Recycle Windows worker restarts near a swap and hostname-binding drift is one conditional hypothesis

See Also

Sources