SharePoint 2010 Performance and Capacity Planning Best Practices Eric Shupps SharePoint Server MVP
About Me SharePoint Server MVP President, BinaryWave Microsoft Patterns & Practices (spg.codeplex.com) CKS:DEV (cksdev.codeplex.com) Web: www.binarywave.com Blog: www.sharepointcowboy.com Twitter: @eshupps Facebook: www.facebook.com/sharepointcowboy
Agenda Demonstrations Infrastructure Network Servers Databases Configuration Caching Compression Throttling and Locks Pages Customization Branding Lists Instrumentation Demonstrations Load Time
Infrastructure
Network Capacity Load Traffic Isolation Web Database Service Applications Search Authentication Indexing
Servers Design to function Design to Locality Heavy read operations require more web servers Heavy write operations require increased SQL IOPS Heavy services (i.e. Search) require additional application servers Design to Locality Global distribution with heavy write may require localized farms
Database Operations Intensity Frequency Search Security Trimming Workflow Content Query Publishing Intensity Collaboration Social Client Access Browsing Frequency
Database Calculations Variable Value # Documents 1,000,000 Average Size 150 KB # List Items 3,000,000 # Versions 3 Total Database Sizing Estimate 864.4 GB Formula: Database size = ((D × V) × S) + (10 KB × (L + (V × D))) Database Size Estimates Content DB Size 486.5 GB Crawl 22.4 GB Property 7.3 GB Profile 48.8 GB Sync 30 GB All other DB’s 269.5 GB Number of User Profiles 50,000
Application Databases Small to moderate size Moderate transactional volume Group on moderate cost/performance disk Analytics May be quite large May require isolation Reporting increases operational overhead Profile PerformancePoint BCS PowerPivot App Registry Word Automation Analytics
Content Databases Practical limit is 200GB Max supported limit is 4TB* Create separate databases for: Site collections with large lists Large numbers of subsites Intensive read/write operations Data isolation (security) Consider amount of time it takes to backup/restore Content * - Requires specific hardware performance criteria and extensive planning
Search Databases Crawl databases can be extremely large High index sensitivity Heavy transactional volume Isolate crawl and temp databases Distribute across spindles and LUN’s Highest performance disk Admin Properties Crawl
Database Management Manually configure auto-growth settings Defragment indexes on a regular basis Limit content DB size per site collection Assign disks based on size, volume and sensitivity Isolate transaction logs Implement regular backup schedule to reduce log file size Enforce quotas
Configuration
SharePoint Caching Page Disk Object First request served from content database, output written to memory Subsequent requests for same resource read from memory Disk File-system objects cached by IIS Database objects not cached Object Commonly requested objects stored in memory Cross-site queries cached in memory
Managing Cache Settings DEMO Managing Cache Settings
IIS Compression Reduces size of files transmitted across the wire Caches compressed content on disk Configurable for various file types Compression range from 0 - 9 Increases CPU utilization on WFE’s Size hardware accordingly Does not effect dynamic content retrieved from database
Setting Compression Levels DEMO Setting Compression Levels
Throttling and Locks SQL Server escalates row locks to table locks (> 5000) Query throttling reduces the impact of any single request by limiting the amount of data queried Throttling is configurable and can be altered for administrators and specific time periods Bit rate throttling controls download speeds of large objects (video, Flash, Silverlight) Dependent upon BLOB cache
DEMO Resource Throttling
Pages
Page Controls Navigation Menus Ribbon Delegate Security Trimming Publishing Fields Search Layout Hidden
Page Data Queries Page Data Sources Master Layout Navigation Controls Permissions Menu Options Web Parts Data Sources File System Database External
Page Customizations Uncustomized Cache Customized
Test Results Average Performance Delta: ~10% Uncustomized Customized
DEMO Customization
Branding Start with a minimal master page Minify and consolidate linked files Reduce size and number of GET operations Use image stitching (CSS sprites) on pages with a lot of small images to reduce number of requests Store resources (style sheets, master pages, layout pages, images) on the PHYSICAL file system (i.e. /_layouts/) not the VIRTUAL file system (Style Library, Publishing Images) Assets in libraries are stored in database Easy for users to modify but reduce performance
Lists
List Items Just because a list CAN hold millions of items doesn’t mean it SHOULD All user content in all lists throughout entire site collection is stored in a single table in the content database Consider query impact across site collection Folders improve view performance NOT query performance List view web parts are now XSLT based; however, large list displays may still require custom code
List Definitions Rows Columns Storage More than 5,000 rows in a list is “large” Default throttle limit Corresponds to SQL lock escalation triggers Monitor locks if increasing throttle limit Columns More columns = more SQL rows More SQL rows can slow down performance up to 35% Storage Use Remote Blob Storage to eliminate storage of large files within SQL Not intended to increase query performance
Instrumentation
Developer Dashboard Developer Dashboard provides metrics on object execution for individual pages Displays code-level request data for events Provides drill-down process isolation Specifies related database queries Identifies request allocations and control event offsets Developers can implement monitoring scopes to display component performance data
Dashboard Example Total Page Execution Time Related Queries Control Events
Using the Developer Dashboard to Isolate Performance Issues DEMO Using the Developer Dashboard to Isolate Performance Issues
More Information SharePoint Server 2010 Capacity Management: Software Boundaries and Limits http://technet.microsoft.com/en-us/library/cc262787.aspx Capacity Management and Sizing Overview for SharePoint Server 2010 http://technet.microsoft.com/en-us/library/ff758647.aspx Capacity Planning for SharePoint Server 2010 http://technet.microsoft.com/en-us/library/ff758645.aspx Performance Testing for SharePoint Server 2010 http://technet.microsoft.com/en-us/library/ff758659.aspx Storage and SQL Server Capacity Planning and Configuration http://technet.microsoft.com/en-us/library/cc298801.aspx Performance and Capacity Technical Case Studies http://technet.microsoft.com/en-us/library/cc261716.aspx Monitoring and Maintaining SharePoint Server 2010 http://technet.microsoft.com/en-us/library/ff758658.aspx
Thank You for attending this session Thank You for attending this session! Please fill in the evaluation form