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.

Leave a Reply

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