IIS Support Quick Reference: Website vs App Pool Restart¶
Category: IIS Operations Guide Tags: IIS, Website, Application Pool, Restart, Operations, Support
Quick Decision Guide¶
When to Restart WEBSITE Only¶
✅ Use for these issues: - Customer reports one specific website is down/slow - Why? Issue is isolated to site-level configuration or bindings - SSL certificate errors or binding issues - Why? SSL certificates and bindings are configured at the website level - Configuration file (web.config) changes were made - Why? Website restart reloads the web.config without affecting the worker process - Authentication problems on a single site - Why? Authentication settings are typically in web.config or site-specific IIS settings - URL redirects not working properly - Why? URL rewrite rules are website-level configuration - Other websites on the same server are working fine - Why? Proves the worker process is healthy - problem is at the website level
⚠️ Impact: Minimal downtime (1-2 seconds), only affects the specific website
When to Restart APPLICATION POOL¶
✅ Use for these issues: - Website is completely unresponsive/hanging - Why? The worker process is stuck/deadlocked - website restart won't unstick it - High memory usage alerts - Why? Memory is consumed at the worker process level - only killing the process frees it - Multiple websites in same pool having issues - Why? If multiple sites are affected, the problem is at the worker process level - "Out of Memory" errors - Why? The worker process has exhausted its memory allocation - needs process restart to free memory - Application crashes or frequent 500 errors - Why? Process instability usually indicates worker process problems that website restart can't fix - After deploying new code/updates - Why? New assemblies/DLLs need the worker process to restart to load them properly - Database connection issues - Why? Connection pooling happens at the worker process level - Performance is very slow across the application - Why? Usually indicates memory leaks, resource exhaustion, or thread pool issues in the worker process
⚠️ Impact: Brief downtime (5-10 seconds), affects ALL websites in that pool
Support Troubleshooting Steps¶
Step 1: Identify the Problem Scope¶
Ask yourself: - Is it affecting one website or multiple? - Are there memory/performance alerts? - What error messages are users seeing?
Step 2: Check Current Status¶
In IIS Manager, look for: - Website status (Started/Stopped) - Application Pool status (Started/Stopped) - Any error indicators
Step 3: Choose Action¶
Single website issue + Others working fine
→ Try WEBSITE RESTART first
Application hanging/crashing + Memory issues
→ Go straight to APP POOL RESTART
Configuration change just made
→ WEBSITE RESTART
Code deployment just happened
→ APP POOL RESTART
Special Case: 500 Internal Server Errors¶
Don't automatically restart for 500 errors! First check:
Check Event Logs/Error Details¶
- Look at Windows Event Viewer → Application logs
- Check IIS logs for specific error details
- Look for detailed error message in browser (if enabled)
Common 500 Error Causes (No Restart Needed):¶
- Code bugs/exceptions → Dev team needs to fix code
- Missing files/assemblies → Deploy missing files
- Web.config syntax errors → Fix configuration
- Permissions issues → Fix file/folder permissions
- Database connection string wrong → Update connection string
When 500 Errors DO Need App Pool Restart:¶
- OutOfMemory exceptions in the logs
- Why app pool restart? The worker process (w3wp.exe) has exhausted its memory allocation. A website restart doesn't kill the process, so the memory stays consumed. Only terminating the worker process frees up that memory.
- Note: This is a temporary fix - if there's a memory leak, it'll happen again
- Application hanging after the 500 errors started
- Thread exhaustion errors
- Process crash immediately after 500 error
Rule: Fix the root cause, don't just restart and hope it goes away!
Common Support Scenarios¶
| Customer Report | Action | Why This Action |
|---|---|---|
| "Website won't load" | Website restart | Why website? Could be binding/config issue specific to that site. Why not app pool? Other sites might be working fine - don't disrupt them unnecessarily |
| "Getting 500 errors" | Check logs first - Don't restart automatically | Why check first? 500 errors are usually code/config problems that restarting won't fix. You need to know what's actually broken |
| "Application completely frozen/hanging" | App pool restart | Why app pool? The worker process is stuck/deadlocked. Why not website? Website restart won't unstick a frozen process - you need to kill and restart the process |
| "Very slow performance" | App pool restart | Why app pool? Usually caused by memory leaks, too many objects in memory, or resource exhaustion in the worker process. Why not website? Website restart doesn't free up process memory |
| "SSL certificate error" | Website restart | Why website? SSL bindings are website-level configuration. Why not app pool? The worker process isn't the problem - it's the site's certificate binding |
| "Login not working" | Website restart first, then app pool if needed | Why website first? Could be authentication config in web.config. Why escalate to app pool? If it's session state corruption or authentication module issues in memory |
| "Database connection error" | App pool restart | Why app pool? Connection pooling happens at the process level. Why not website? Database connections are managed by the worker process, not individual sites |
How to Perform Restarts¶
Website Restart¶
- Open IIS Manager
- Find the website in left panel
- Right-click → Stop
- Wait 2 seconds
- Right-click → Start
Application Pool Restart¶
- Open IIS Manager
- Click Application Pools in left panel
- Find the correct app pool
- Right-click → Recycle
- Wait for confirmation
Escalation Guidelines¶
Try Website Restart First When:¶
- Problem seems website-specific
- Why? If only one site is affected, the issue is likely at the site configuration level, not the worker process
- Low risk tolerance for downtime
- Why? Website restart affects only that site (1-2 seconds), app pool restart affects all sites in the pool (5-10 seconds)
- Other sites are working normally
- Why? Proves the worker process is healthy - problem is isolated to one site's configuration
Skip to App Pool Restart When:¶
- Clear memory/performance issues
- Why? Memory problems exist at the worker process level - website restart won't free memory
- Application is completely hung
- Why? The worker process is deadlocked/frozen - need to kill the process entirely
- Multiple error types occurring
- Why? Indicates worker process instability - multiple symptoms point to process-level problems
- Recent code deployment
- Why? New code assemblies need the process to restart to load properly - website restart won't reload assemblies
Escalate to Next Level When:¶
- App pool restart doesn't fix the issue
- Problem keeps recurring quickly
- Server-wide performance issues
- Multiple app pools affected
Documentation Template¶
Always document: - Time of restart - Type of restart performed (website/app pool) - Reason for restart - Result (fixed/not fixed) - Any error messages seen
Example: