Loading in 2 Seconds...
Loading in 2 Seconds...
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
OFC301 Capacity and Performance Planning for Microsoft SharePoint Products and Techologies 2007 Mike Fitzmaurice Enterprise Technology StrategistMicrosoft Corporation
Related Sessions, HOLs, etc. • OFC222 - Microsoft SharePoint Products and Technologies 2007: Administrative Architecture and Planning for Deployment, Part 1 • DEV335 - What's New in Microsoft Visual Studio Team System for Testers, New Features in Visual Studio Code Name "Orcas" and Best Practices for Testing AJAX, SharePoint, and Reporting Services
Capacity Planning The art of evaluating a technology againstthe needs of an organization, and making an educated decision about the configuration and procurement of hardware to meet the demands specific to a system being installed
How much hardware do we need? Should we implement a server farm? Do we need SQL Server? How much data can we store? What benefits are there in using 64-bit HW? How many users can our environment support? How many sites can we run on our servers? How do we validate our design? Common Questions
Agenda • Provide a Framework for Capacity and Performance Planning which can be Applied and Reused • Demonstrate the Steps for Stress/Load-Testing a MOSS 2007 Server Farm • Provide Recommendations and Best Practices • Performance and Capacity Planning Framework • Stress Testing with Visual Studio Team System Test Edition (VSTT) • Page Optimization Techniques • Wide-Area Testing/Optimization
Components Software Boundaries Throughput Targets Data Capacity Hardware Phases Plan for Software Boundaries Estimate Performance and Capacity Requirements Plan Hardware and Storage Requirements Test Your Design Performance and capacity planning: The process of mapping your solution design to a farm size and set of hardware that will support your business goals. FrameworkPlanning for Capacity and Performance
Plan for Software BoundariesPhase 1 • Object Categories • Software Scalability vs. Hardware Scalability • RTM Test Results, Findings, and Recommendations from the Product Group • Test Environment • Test Results • Recommendations • Other Considerations
Plan for Software BoundariesObject Categories • Site Objects • Site Collections, Web sites, documents, document libraries, list items, document file size, etc. • People Objects • User profiles, security principals, etc. • Search Objects • Search indexes, Indexed documents • Logical Architecture Objects • Shared Services Providers, Site Collections, Content Databases, Zones, etc. • Physical Objects • Servers: Index, WFE, Database, Application, etc.
Plan for Software BoundariesSoftware Scalability vs. Hardware Scalability • Software scalability • Recommendations for acceptable performance based on software behavior and characteristics • Hardware scalability • Does not change/modify software behavior or characteristics…but can increase overall throughput of a server farm and might be necessary to achieve acceptable performance as the number of objects approach recommended limits
Network: Gigabit Ethernet (one billion bits/sec) Farm Configurations Tested: Plan for Software BoundariesProduct Group's Test Environment • Hardware Specifications:
Plan for Software BoundariesTest Results and Findings • Throughput vs. Number of Site Collections in One Content Database
Plan for Software BoundariesTest Results and Findings • Throughput differences between flat document library vs. document library with folders
Plan for Software BoundariesRecommendations & Guidelines (subset) • For all recommendations, visit “Plan for software boundaries (Office SharePoint Server)” at http://technet2.microsoft.com/Office/en-us/library/6a13cd9f-4b44-40d6-85aa-c70a8e5c34fe1033.mspx
Plan for Software BoundariesOther Considerations • Throughput vs. number of Web servers • Test findings showed plateau at 5:1 • Perform tests in your environment • Other Recommendations • Carefully plan your site hierarchy and design • Minimize # Web applications and application pools • Limit # of Shared Service Providers • Plan for database growth • Follow data and feature best practices andsuggested limits…
Estimate Performance and CapacityPhase 2 – Usage Profiles • Determine Usage Profile • Usage profile == User community’s behavior • Distribution of requests across content • Operation types and frequency • Existing solution in place? Mine IIS logs • Leverage usage profiles provided in configurations tested by Product Group as starting point:
Estimate Performance and CapacitySample Usage Profile (WSS Collaboration)
Estimate Performance and CapacityPhase 2 –Throughput Requirements • Estimating Throughput Targets • User response time, concurrency • Throughput target rule of thumb: 1 RPS == 100 concurrent users. * Note, this is consistent with SPS 2003, WSS 2.0 Warning: Plan for Peak Concurrency Throughput targets (in RPS) at various concurrency rates (recommended response time of 1 – 2 seconds)
Estimate Performance and CapacityPhase 2 – Other Factors • Other configuration factors that can influence throughput targets • Indexing (schedule indexing window off-hours) • Caching enabled? • Output Caching and Cache Profiles • Object Caching • Disk-based Caching for Binary Large Objects • Page customizations • Custom Web Parts Custom Caching Overview (Office SharePoint Server 2007): http://msdn2.microsoft.com/en-us/library/aa589700.aspx
Plan Hardware and StoragePhase 3 – How SharePoint Technology Scales • Designed to grow with organization needs • Server resources: x32, x64, CPU, RAM, HDD • Recommend 64-bit for back end services (SQL) which can leverage additional addressable memory • SQL: HDD configuration critical • Server Farm • Topology restrictions removed • WFE, Query, Index, Excel Calc, Project, SQL • Adopted WSS adage: content only limited by HW capability* • Sites: In WSS 3.0, Portals sites are "just another WSS site”
WSS 3.0 and MOSS 2007 can work on both 64-bit Hardware Recommended 32-bit can directly address only a 4GB Memory Address Space 64-bit supports up to 1,024 GB Memory (Physical and/or Addressable) Larger # of Processors Enhanced Bus Architecture 64-bit HW Prioritization SQL Server Index Excel Search WFE *64-bit hardware can be mixed within a farm, but not within server role level (i.e. WFEs, etc) Plan Hardware and StoragePhase 3 – 64-bit vs. 32-bit Hardware
Plan Hardware and StoragePhase 3 – Single Server Example • One Server Configured as: • Web Front-End Server Role • Application Server Role • Database Server Role • Appropriate for limited use-scenarios including the following: • Installing Office SharePoint Server 2007 for evaluation purposes. • Deploying only Microsoft Windows SharePoint Services 3.0. • Deploying a subset of the Office SharePoint Server 2007 features. • Deploying Office SharePoint Server 2007 for a limited purpose (such as for a single department) or for a limited number of users.
Web Servers Clustered SQLServer Application Server Plan Hardware and StoragePhase 3 – Multi-Server Farm Example • Optimizes performance of web servers • Increases redundancy and reduces points of failure • Redundancy at WFE and Database server roles • Determine configuration based on your business needs and goals • Determine config of other Application roles (Excel Services, Index, Forms, etc)
Plan Hardware and StoragePhase 3 – Storage Considerations • Primary Metric: Document Storage • Plan for 1.2 – 1.5 x file system size for SQL Server note: metric is closely tied to RAID level used on SQL disks • Secondary Metric: Index Size • Index Server: 30% of total size of all content indexed for a single server • Query Server: 2.5 x index size
FrameworkPhases Recap • Phases • Phase 1: Plan for Software Boundaries • Phase 2: Estimate Performance and Capacity Requirements • Phase 3: Plan Hardware and Storage Requirements • Phase 4: Testing Your Design
Performance Testing • Tools • Visual Studio Team System Test Edition (VSTT) • When? • Initial deployments • New hardware configurations • Impact of scaling across or up • Validating custom solutions • Debugging performance related issues
What do you need? • Data for testing (Sites, Search terms, lists, documents etc) • A test farm with enough servers to mirror a topology you are testing for • A VSTT controller machine (2-4 GB RAM); preferably with SQL Server 2005 to store the test results • VSTT clients machines; preferably physical; with at least 2GB of RAM to support many concurrent connections • Create VSTT Test Project (Web and Load)
Testing With VSTT • Establish a purpose for testing. What are you trying to learn? • Usage Profiles • Create a good test plan with mix of different types of test • Setting up the VSTT rig with Controller, Clients and Database • Create Test data (Sites, Content etc) • Can use SharePoint 2007 Test Data Population Tool on CodePlex (http://www.codeplex.com/sptdatapop) • Uses a XML Configuration file to load or delete data • Create VSTT web tests for each scenario identified
Testing With VSTT (cont.) • Customize Web test as needed to read variable data from an external data source • Determining what your peak loads are • Create Load test profile, think times, new users and capturing counters, Page hit frequency, Web test frequency, Test run times, effect of Async jobs • Configure other test properties like warm up time, Connection type etc • VSTT automatically collects data from all client machines and aggregates them • Analyzing test data remotely
Putting It All Together • Setup your Rig • Create your content (Data Load Tool or Manually) • Create your tests (web, load) • Configure the test parameters • Run. Measure. Repeat.
Full Walk-Through of VSTT/MOSSDig through your conference bag • Your conference DVDs contain video of OFC301 as delivered at TechEd: Orlando • 10-to-15-minute demo of the entire process • In lieu of that, I’m delivering extra content and real-world lessons learned….
The Out-of-Box Experience • Most caching options are turned off • Anonymous access is disabled • IIS Compression is turned on • This is new in MOSS 2007 • Review sample site • Tools: • Fiddler • Visual Studio Team Test
Fiddler (c.f. Visual Studio Team System Test Edition) • www.fiddlertool.com • Lets you examine individual requests to see what is being downloaded on each request and how large each item is • Tweak settings based on what you see in Fiddler • Test again with VSTT to check for aggregate performance improvements
SharePoint Client Payload • SharePoint pages send down a relatively large payload when you visit a site • Improved from SPS 2003, but still big • This payload comes from: • JScript files • IE Behaviors • Images • Text content • Some elements download multiple times per page • Some download again during same browser session on the same site
SharePoint Client Payload Example /Pages/Default.aspx 107,128 /_layouts/1033/core.js 54,367 /_layouts/1033/ie55up.js 20,508 /_layouts/images/gosearch.gif 19,933 /_layouts/1033/init.js 15,732 /_layouts/1033/styles/core.css 13,596 /PublishingImages/newsarticleimage.jpg 10,710 /WebResource.axd 8,272 /WebResource.axd 5,373 /_layouts/1033/search.js 5,092 /_layouts/images/navshape.jpg 2,924 /_layouts/1033/EditingMenu.js 2,735 /WebResource.axd 2,482 /_layouts/1033/styles/controls.css 1,448 /_layouts/1033/styles/HtmlEditorTableFormats.css 1,317 /_layouts/images/titlegraphic.gif 1,299 /_layouts/images/icongo01.gif 1,171 /_layouts/images/pagebackgrad.gif 1,082 /_layouts/images/stsicon.gif 1,070 /_layouts/images/itgen.gif 1,050 /_layouts/images/itdisc.gif 1,049 /_layouts/images/itlink.gif 1,043 /_layouts/images/ittask.gif 1,039 /_layouts/images/itcontct.gif 1,036 /_layouts/images/helpicon.gif 1,025 /_layouts/images/recycbin.gif 1,004 /_layouts/portal.js 954 /_layouts/1033/styles/HtmlEditorCustomStyles.css 642 /_layouts/images/itevent.gif 619 /_layouts/images/itdl.gif 582 /WebResource.axd 224 /WebResource.axd 218 /_layouts/images/siteTitleBKGD.gif 209 /_layouts/images/tvplus.gif 209 /_layouts/images/tvminus.gif 207 /_layouts/images/quickLaunchHeader.gif 148 /_layouts/images/topnavselected.gif 146 /_layouts/images/siteactionsmenugrad.gif 146 /_layouts/images/topnavunselected.gif 92 /_layouts/images/menudark.gif 68 /_layouts/images/whitearrow.gif 68 /_layouts/images/Menu1.gif 68 /_layouts/images/pageTitleBKGD.gif 63 /_layouts/images/navBullet.gif 58 /_layouts/images/tvblank.gif 56 /_layouts/images/lstbulet.gif 56 /_layouts/images/blank.gif 43 Total288,361 Bytes • Files requested on first hit of the home page of a just-created publishing site
IIS Compression • By default, when you install SPT 2007 IIS Compression is turned on • Hit the site and look in %WINDIR%\IIS Temporary Compressed Files • Compression is turned on primarily for static files • Static files: Htm, html, txt, js, css, htc; • Dynamic files: asp, exe, axd • You may want to also compress aspx files • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" “exe" "axd" “aspx" • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" “exe" “axd" “aspx“ • NOTE: No point in compressing files that are already compressed, like .jpg
IIS Compression Caveats • Consider tuning the compression level • Lower values make bigger files but put less stress on system resources • Out of the box it is set to 0 • Can go as high as 10 • 9 was often used in v2 • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcDynamicCompressionLevel "9" • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcDynamicCompressionLevel "9"
Anonymous vs. Authenticated Users • The authentication of users can have an impact on what is possible with caching • Anonymous users are easiest because they all see the same thing • Authenticated users can use things like loyalty programs but still use cached content too • The challenge with authenticated users is to minimize variations of groups and rights • Design the site hierarchy accordingly if possible • Put non-anonymous content in subsite(s)
Output Caching • Implemented in MOSS as Site Collection Output Cache • Control it at the site collection level • Exceptions allowed for layout pages and subsites • Caching profiles determine cache characteristics • You can use different profiles for anonymous and authenticated users • Out of box includes four profiles that fit most scenarios
Output Cache Caveats • What if I don’t want the whole page to be exactly the same every time? • Post-Cache Substitution controls, like login • http://www.nikhilk.net/PostCacheSubstitution.aspx • Default caching behavior for authenticated users is to cache for Reader only • Check Allow writers to view cached content in profile to change • Use the cache debug statements • Verify it is working first! • It’s a checkbox when you configure Site Collection Output Cache
Blob Cache • Blob Cache puts SharePoint items on disk • Also stamps a cacheability value on items in the blob cache • Turned off by default; must edit web.config to change • Parameters: • location: the directory where items are stored • path: a RegEx expression of the types of files that should be blob cached • maxSize: the size in MB that the cache is allowed to use • max-age: the amount of time in seconds that items should be cached on the client • enabled: set to true to enable the blob cache
Blob Cache Caveats • Doesn’t have an admin UI, but don’t worry • Add items used in your site to it • HTC files are a good example – they’re used but they aren’t in the default list • Only works on SharePoint list items • Some lists don’t work out of the box for anonymous users • Master Page Gallery • Style Library
Object Cache • Enabled by default • Used to store frequently accessed items • Site navigation structure • Field content of a library or list item • ContentByQuery Web Part data • Configured to use 100MB by default • Use Object Cache UI to flush Object Cache as well as disk-based cache (which really means the blob cache)
Object Cache Caveats • Use caution when adjusting memory allocated to Object Cache • Monitor the SharePoint Publishing Cache… Publishing cache hit ratio for your site collection • Target hitting 90% plus • If below that number then increase amount of memory allocated to Object Cache • All caches share same object space in process • Means no more than 2GB max on x32 windows • Includes SharePoint DLLs and modules as well • x64 can help here if you are memory constrained
Delay Downloading core.js • Core.js is the biggest of the JScript files • 257k on disk, 54k compressed • Not required at load time in most anonymous user scenarios • Blog by Product Group describing how to delay loading it • http://blogs.msdn.com/ecm/archive/2007/02/21/building-a-new-page-layout-which-does-not-reference-core-js-but-downloads-it-while-the-page-is-being-viewed-thereby-optimizing-response-time.aspx
Delay Downloading • Custom layout page that doesn’t use core.js • Add this tag to prevent the use of core.js unless it’s referenced:<SharePointWebControls:ScriptLinkrunat="server"/> • Create custom control to check for authenticated users if (HttpContext.Current.Request.IsAuthenticated)Microsoft.SharePoint.WebControls.ScriptLink.RegisterCore(this.Page, true); • Put control in the GAC, mark as safe in web.config and add to layout page
Delay Downloading (cont.) • Caveats • Site Master Page and the System Master Page must be different; otherwise all pages in _layouts would not work right • Only works for anonymous users; authenticated users always need it at load time for things like Site Actions menu • Make sure master page doesn’t have controls that require core.js at load time to work • Make sure master page doesn’t have any ScriptLink controls that load or reference core.js