IIS Support Quick Reference: Website vs App Pool Restart
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:
2025-08-04 14:30 - Restarted "CustomerPortal" app pool due to high memory usage (2.1GB). Issue resolved, site responding normally.