Overcoming Sharepoint Performance Issues At Scale
Identifying Performance Bottlenecks
As SharePoint sites grow in size and usage, administrators may encounter performance issues such as slow page loads, throttling, and timeouts. The first step is identifying where the bottlenecks are occurring in the SharePoint architecture.
Analyzing Site Architecture
Examine how SharePoint sites are architected including site collections, sites, libraries, lists, pages, custom solutions, and features enabled. Review governance policies on site creation and customizations. Assess the logic behind the architecture and if large sites can be broken down further.
Monitoring Resource Usage
Use tools like Performance Monitor to analyze CPU, memory, I/O, and network usage on SharePoint servers during peak loads. Identify resources running hot and causing contention. Determine if resource usage aligns with the site architecture analysis.
Identifying Slow Pages and Operations
Use the SharePoint ULS logs, tracing logs, or tools like SPMonitor to pinpoint slow pages and operations. Gather performance data on page load times, query durations, web part rendering, and more. Isolate the top issues to address.
Optimizing Database Performance
SharePoint’s back-end SQL databases can present bottlenecks as they grow large. Use the following methods to optimize database performance.
Indexing for Faster Queries
Analyze SharePoint database logs to identify frequently executed queries that are slow, resource-intensive, or throttled. Create targeted indexes on columns and include only required fields to speed up these queries.
Partitioning Large Lists and Libraries
If large lists and document libraries are causing slow performance, partition them into smaller logical segments using views, folders, filtering, or custom solutions. This also helps cache hit ratio and manageability.
Managing Database Size and Growth
Set up archiving policies to move inactive, stale, or deprioritized content into cheaper storage tiers. This helps control database size. Monitor growth rates and use SharePoint’s limits monitoring to right size databases.
Enabling Caching
Caching reduces database trips and improves performance as users access common content. Consider the following caching techniques:
Configuring Object Cache Settings
Enable object caching on the web servers and tune settings like cache size, limits, expiration policies based on usage patterns. Object caching is most impactful for read-heavy workloads.
Using Redis for Distributed Caching
For farms under heavy loads, implement Redis or memcached for distributed caching across multiple cache servers. This avoids duplicate objects in memory and scaling issues.
Caching Site Assets and Content
Configure cache profiles, settings, and dependencies to cache static assets, page output, data requests and more that can be cached. But watch for excessive caching which can cause stale data.
Tuning Page Load Performance
To optimize SharePoint page load times especially on public-facing sites, employ these techniques:
Minifying and Bundling CSS/JavaScript
Reduce number of HTTP requests by bundling multiple CSS and JavaScript files into consolidated files. Minify files to reduce size prior to bundling. Gzip compress files for faster loads.
Optimizing Page Layouts and Web Parts
Simplify page layouts to only essential web parts. Set web part connections judiciously. Use lighter weight scripts and widgets if pages are heavy. Disable unused features and Web Parts.
Enabling Deferred Loading of Components
Prioritize loading of visible page content first. Defer non-essential web parts and components load to occur after on-screen content has rendered for improved user experience.
Scaling Out SharePoint Farms
When even a well optimized SharePoint farm reaches capacity limits, scale out to add resources:
Adding Web/App Servers for Capacity
Introduce new web servers and application servers into the farm to handle increasing load. Balance search crawled properties across servers.
Load Balancing Requests Across Servers
Set up Network Load Balancing (NLB) or a load balancer to distribute application and search queries evenly across all web servers to prevent hot spots.
Implementing Geo-distributed Topologies
For global organizations, implement a geo-distributed SharePoint deployment spanning physical locations with local failover servers, distributed cache, and multi-geo capabilities.
Monitoring Performance Continuously
Ongoing monitoring and alerting ensures optimum SharePoint performance regardless of usage surges, new components, or infrastructure changes.
Setting up Baseline Metrics
Determine key usage trends, load patterns, and performance benchmarks on a normal day. Set up scripts to capture baseline metrics across all layers to compare before/after changes.
Getting Visibility into All Layers
Unify monitoring across SharePoint application tier, database server, hardware resources, and network to correlate how changes in one layer impact others using tools like SCOM.
Alerting on Performance Regressions
Configure alerts for key threshold breaches on metrics like memory consumption, query durations, cache ratio, NLB imbalance so administrators can react quickly.