“High CPU usage on SharePoint server” – CPU consumption is unusually high, slowing down SharePoint performance.

Troubleshooting “High CPU Usage on SharePoint Server”

Issue: The SharePoint server experiences unusually high CPU consumption, leading to slow page loads, delayed workflows, and performance degradation.
Causes: Misconfigured IIS settings, inefficient SQL queries, excessive background jobs, large list processing, or resource-intensive third-party solutions.


1. Identify the Root Cause of High CPU Usage

Before applying fixes, determine which process is consuming the most CPU resources.

Tools for Diagnosis:

Task Manager (taskmgr.exe) → Identify high-CPU processes.
Resource Monitor (resmon.exe) → Analyze CPU consumption at a granular level.
Performance Monitor (perfmon.msc) → Track long-term CPU trends.
SharePoint Health Analyzer → Check for CPU-related warnings.
SQL Server Profiler → Identify resource-heavy queries.
IIS Worker Process (w3wp.exe) Monitoring → Check if SharePoint IIS application pools are consuming excessive CPU.

PowerShell to List High-CPU Processes:

Get-Process | Sort-Object CPU -Descending | Select-Object -First 10

2. Check & Optimize IIS Worker Processes (w3wp.exe)

Each IIS Worker Process (w3wp.exe) handles SharePoint requests and can cause high CPU usage if misconfigured.

Fixes:

🔹 Open Task Manager → Processes → Sort by CPU and find w3wp.exe.
🔹 Identify which SharePoint web application is consuming high CPU:

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

🔹 Recycle application pools to free up CPU:

Restart-WebAppPool -Name "SharePoint - 80"

🔹 Enable IIS request limits to prevent excessive CPU consumption.


3. Optimize SQL Server Queries to Reduce CPU Load

SQL Server is a major component of SharePoint, and inefficient queries spike CPU usage.

Fixes:

🔹 Identify high-CPU queries:

SELECT TOP 10 * FROM sys.dm_exec_requests ORDER BY cpu_time DESC;

🔹 Optimize database performance:

  • Rebuild fragmented indexes: ALTER INDEX ALL ON [dbo.AllDocs] REBUILD;
  • Reduce auto-growth settings to prevent frequent resource spikes.
    🔹 Offload read-heavy operations to read replicas (if using SQL Always On).

4. Reduce SharePoint Timer Jobs & Workflows Consumption

Excessive SharePoint Timer Jobs and workflows cause high CPU usage.

Fixes:

🔹 Navigate to Central Admin → Monitoring → Review Job Definitions.
🔹 Disable unnecessary timer jobs or schedule them during off-peak hours.
🔹 Restart SharePoint Timer Service (SPTimerV4) periodically:

Restart-Service SPTimerV4

🔹 Review workflow performance and move complex workflows to Power Automate.


5. Optimize SharePoint Caching to Reduce CPU Load

Inefficient caching causes repeated database queries, leading to high CPU consumption.

Fixes:

🔹 Enable BLOB Caching in web.config:

<BlobCache location="C:\BlobCache" path=".*\.(gif|jpg|png|css|js|ico)$" maxSize="10" enabled="true" />

🔹 Configure Output Caching in Central Administration.
🔹 Reduce Object Cache Size in site collection settings.


6. Manage Large Lists & Queries for Better CPU Performance

Processing large lists with over 5,000 items can spike CPU usage.

Fixes:

🔹 Enable List View Threshold limits:

  • Central Admin → Manage Web Applications → Resource Throttling.
    🔹 Index columns in large lists to improve query efficiency.
    🔹 Archive old or unused lists.

7. Adjust CPU Priority for SharePoint & Background Processes

To prevent SharePoint from consuming too many CPU resources, adjust process priorities.

Fixes:

🔹 Open Task Manager → Find w3wp.exe → Right-click → Set Priority → Below Normal.
🔹 Use PowerShell to dynamically adjust CPU priority:

Get-Process w3wp | ForEach-Object { $_.PriorityClass = "BelowNormal" }

🔹 Set CPU affinity for IIS Worker Processes to balance load across cores.


8. Optimize Disk & Virtual Memory Settings

If paging occurs frequently, CPU usage can increase due to excessive disk read/writes.

Fixes:

🔹 Move SQL database and transaction logs to separate disks.
🔹 Increase paging file size (set it to 1.5x RAM size).
🔹 Run Disk Cleanup (cleanmgr) to remove unnecessary files.


9. Check for Faulty Third-Party Solutions or Custom Code

Poorly optimized third-party solutions or custom scripts can consume excessive CPU.

Fixes:

🔹 Disable third-party web parts & solutions and monitor CPU usage.
🔹 Review custom code for performance issues using:

Get-SPFeature | Where-Object { $_.Scope -eq "Web" }

🔹 Use SharePoint Developer Dashboard to identify slow web parts.


10. Regular Monitoring & Automation

10.1. Automate Resource Monitoring

✅ Set up Performance Monitor Alerts for high CPU usage.
✅ Use SharePoint Health Analyzer to detect CPU spikes.
✅ Configure Event Viewer Alerts for CPU-related warnings.

10.2. Keep SharePoint & SQL Server Updated

✅ Apply the latest SharePoint Cumulative Updates (CUs).
✅ Regularly patch SQL Server and Windows Server.


Leave a Reply

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