“Web server overload” – Web front-end servers are overloaded, causing slow performance.

Loading

Troubleshooting “Web Server Overload” in SharePoint

Issue: Web Front-End (WFE) servers are overloaded, leading to slow page loads, high CPU/memory usage, request timeouts, and site unresponsiveness.
Causes: High user traffic, inefficient caching, excessive resource demands, unoptimized IIS settings, or bottlenecks in SQL Server.


1. Identify the Cause of Web Server Overload

Before applying fixes, determine what is causing the overload on the web front-end (WFE) servers.

Symptoms of an Overloaded Web Server:

✅ Slow page loads and frequent timeouts.
✅ High CPU and memory usage on WFE servers.
✅ IIS worker process (w3wp.exe) consuming excessive resources.
✅ Increased latency in requests between WFE and SQL servers.
✅ Frequent 503 (Service Unavailable) or 500 (Internal Server Error) responses.
✅ SharePoint Health Analyzer reports performance issues.

Tools for Diagnosis:

🔹 Task Manager → Check CPU and RAM usage on the WFE server.
🔹 IIS Manager (inetmgr) → Monitor worker processes and requests.
🔹 Performance Monitor (perfmon.msc) → Track CPU, memory, and disk I/O.
🔹 SharePoint ULS Logs → Look for high request processing times.
🔹 Event Viewer (eventvwr.msc) → Identify critical errors or service failures.
🔹 Fiddler/Wireshark → Monitor HTTP request delays and network issues.

Check WFE Server Performance with PowerShell:

🔹 Get the current CPU usage of IIS Worker Process:

Get-Process w3wp | Select-Object ProcessName, CPU, PM

🔹 Check IIS worker process memory usage:

Get-WmiObject Win32_Process | Where-Object { $_.Name -eq "w3wp.exe" } | Select-Object Name, WorkingSetSize

2. Optimize IIS (Internet Information Services) for SharePoint

Fixes:

🔹 Increase Application Pool Recycling to free up memory:

  • Open IIS Manager (inetmgr) → Application Pools.
  • Select SharePoint – 80 → Advanced Settings → Recycling → Set a lower interval (e.g., every 12 hours).

🔹 Enable Output Caching to Reduce Processing Load:

  • Go to Central Admin > Site Collection Cache Profiles.
  • Enable BLOB caching to store frequently used assets in memory.

🔹 Reduce Worker Process Memory Usage:

Set-WebConfigurationProperty -filter "/system.applicationHost/applicationPools/applicationPoolDefaults" -name recycling -value @{privateMemory=500000}

🔹 Disable Debugging in Web.Config (debugging increases processing overhead):

  • Open web.config and set:
<compilation debug="false" />

3. Optimize SharePoint Configuration to Reduce Load

Fixes:

🔹 Enable Object Caching to reduce database queries:

Set-SPSite -Identity http://yoursharepointsite -EnableCache $true

🔹 Enable Page Output Caching (Improves performance for anonymous users):

  • Go to Site Settings > Site Collection Object Cache.
  • Enable Output Cache Profile for faster rendering.

🔹 Reduce List View Threshold to Prevent Large Queries:

Set-SPWebApplication -Identity http://yoursharepointwebapp -MaxItemsPerThrottledOperation 2000

🔹 Disable View State for Web Parts that Don’t Need It (reduces payload size).
🔹 Optimize Large Libraries and Lists by adding indexes.


4. Scale Out Web Front-End Servers

If a single WFE server is overloaded, consider adding additional WFEs behind a Load Balancer.

🔹 Check Current Load Balancer Configuration:

Get-SPServiceInstance | Where-Object { $_.TypeName -like "Microsoft SharePoint Foundation Web Application" }

🔹 Deploy Additional WFEs to Distribute Load:

  • Configure Network Load Balancing (NLB) or use a hardware load balancer (F5, Citrix ADC).
  • Assign a dedicated WFE for Search Queries if needed.

5. Reduce Database Load to Improve Web Server Performance

Fixes:

🔹 Move Search Indexing to a Separate SQL Instance to reduce query load.
🔹 Optimize SQL Server Performance by:

  • Rebuilding indexes
  • Running DBCC CHECKDB to detect corruption
  • Increasing TempDB file size for faster queries.
    🔹 Limit Direct Database Calls from Custom Code (avoid SPList.Items in loops).

6. Optimize Network Performance Between WFEs and SQL Server

Fixes:

🔹 Enable Compression in IIS:

Set-WebConfigurationProperty -filter "/system.webServer/httpCompression" -name enabled -value True

🔹 Check Network Latency Between SharePoint and SQL Server:

Test-NetConnection -ComputerName "YourSQLServer" -Port 1433

🔹 Use a Dedicated Network Interface for SQL Server Communication.


7. Monitor & Automate Web Server Performance Checks

7.1. Set Up Performance Monitoring

✅ Use Performance Monitor (perfmon.msc) to track:

  • IIS Request Queues
  • CPU % Usage
  • SQL Server Requests

✅ Configure SharePoint Health Analyzer to detect overloaded servers.

7.2. Automate IIS Performance Optimization with PowerShell

Schedule a script to clear IIS logs and restart slow application pools:

Restart-WebAppPool -Name "SharePoint - 80"

Leave a Reply

Your email address will not be published. Required fields are marked *