SharePoint Acceleration Performance for the Rest of Us Part 2 - Revenge of the Milliseconds Keith Tuomi KEITH TUOMI SharePoint Consultant / Developer at itgroove Developing Online Systems since Himem.sys 11 years as dedicated .NET/Microsoft Developer MCP, MCPD, MCSE yalla.itgroove.net Blog Itgroove Blogs! @itgroove_keith Twitter www.itgroove.net Web Recap SharePoint Performance Part 1 http://www.vsharepoint.com/Documents/Presentations/March%202012/SharePoint%20Performance.swf Focused on: Desktop Operating Systems Content Management Browsers Key Tools: ySlow: http://yslow.org/ Fiddler: http://www.fiddler2.com/fiddler2/ Good ol’ web design smarts: http://www.useit.com/ http://websitetips.com/optimization The Importance of Speed for your SharePoint Portal Web Application Adaptive behavior The ability of the user interface to track a user's behavior and respond appropriately. Content density The concentration of content elements on the user interface of a design. Search performance Defined by the search time divided by the number of elements in an interface. Decreases significantly as the number of elements increases Customization Interfaces that allow adaptations to particular user preferences and tasks they wish to perform. Minimal memory load Minimal (human) memory load through easily recognized, sufficiently detailed interfaces that offer clear solutions This minimizes cognitive overhead on shortterm "working memory" during complex thinking activities. Optimum learning occurs when the cognitive load is kept to a minimum. The Importance of Speed for your SharePoint Portal Web Application Speed Speed is a measure of how fast a web site responds to user input. There are two main components to web site speed: 1) initial download and display speed 2) response time of particular web page elements to user input. Users are sensitive to download speed, with tolerable thresholds that depend on perceived complexity, bandwidth speed, and other factors (such as age). Source: http://www.websiteoptimization.com/speed/tweak/design-factors/ Next Steps – SharePoint Config Q. How far can I take SharePoint administrative privileges to improve performance? A. Far. - Blob Cache - Output Caching - Object Caching - Throttling - Indexing - Health Analyzer Blob Cache Disk-based cache that stores files that are used by Web pages to help them load quickly in the browser, and reduces the load on the database These files are known as binary large objects (BLOBs), and the cache is known as the BLOB cache. The BLOB cache is stored directly on the hard disk drive of a front-end Web server computer. The first time that a Web page is called, these files are copied from the database to the cache on the server hard disk drive, and all subsequent requests for those files are then served from the hard disk drive cache of the server. http://technet.microsoft.com/enus/library/cc26179 7.aspx#section3 Output Caching In-memory cache that saves rendered ASPX pages. Improves performance in two ways: 1. Reduces the amount of SQL calls. 2. Reduces workload on the WFE because pages do not need to be re-rendered. Output Cache should not be used with sites using a low read to write ratio because frequent changes to content make it hard to keep the cache fresh. Understanding how important it is to have the most current content available to the user is vital. If the pages are anonymous, then no SQL check needs to be done at all to present the cached pages. Microsoft testing concluded a ninefold improvement in throughput when compared to having to render the page every time it was rendered. http://msdn.microsoft.com/enus/library/aa622758.aspx http://servername/_Layouts/sitecachesettings.aspx (only available when publishing feature enabled) Output Caching Create Output Cache Profiles 1. Go to the home page for the top-level site in the site collection. 2. On the Site Actions menu , click Site Settings. 3.Under Site Collection Administration, click Site collection cache profiles. 4. On the Cache Profiles page, click Add New item. In the Title section, type a title for the new cache profile. In the Display Name section, type a name for the cache profile. More: http://office.microsoft.com/en-us/sharepoint-server-help/improve-page-rendering-by-configuring-output-cachingHA101785628.aspx Object Caching Object cache stores metadata about SharePoint Server objects (like SPWeb, SPSite, SPList, etc.) on the WFEs, in memory When a page is rendered, if there is data that needs to be retrieved through these objects, the SQL Server will not be hit. Features of SharePoint that use Object cache are publishing, content query web part, navigation, search query box and metadata navigation. These features are specifically written to use the Object cache API instead of the SharePoint API directly. Developers writing custom functionality can also tap into the Object cache API. http://technet.microsoft.com/enus/library/cc261797.aspx#section1 http://servername/_Layouts/objectca chesettings.aspx Object Caching Configuring the object cache 1. On the Site Actions menu , point to Site Settings, and then click Modify All Site Settings. 2. Under Site Collection Administration, click Site collection object cache. 3. In the Object Cache Size section, type a value in the box to specify the amount of memory (in megabytes) that you want the object cache to use. 4.In the Cross List Query Cache Changes section, select one of the following options: If your content changes frequently and you want to display the most accurate results possible, select Check the server for changes every time a cross list query runs . On site collections where the improved performance you get from caching does not compromise the accuracy of the results, select Use the cached result of a cross list query for this many seconds. 5. In the Cross List Query Results Multiplier section, type a number from 1 through 10 to use as a results multiplier. Type a larger number if your site collection has unique security permissions applied to many lists and sites. Type a smaller number if your site collection does not have unique permissions on each list or sites. A smaller multiplier uses less memory per query. Object Caching More on Cross-List Querying.. The cross-list query cache calls the site (SPWeb) and searches for items in one or more lists. The results of the query are cached, and data from multiple list sources is returned. Caching improves the query's performance. The Content By Query Web Part (CQWP) uses cross-list query caching to improve its speed and performance. When you cache a cross-list query, no database round trip is required to retrieve results for a CQWP. You can use cross-list query caching across sites in a site collection, and the caching system retrieves and caches an optimum set of query results for each query. Additionally, the cache configuration includes enough metadata to dynamically trim for security each time a page is executed. You can almost always cache results of a cross-list query. However, when a checkedout document is queried, data retrieved from that document bypasses the caching mechanism; that data is not cached until the document is checked in. Throttling Resource throttling provides options for monitoring and throttling server resources and large lists for Web applications. Enables you to control resource utilization during peak usage and prevent user activity from negatively affecting server performance. In SharePoint Server 2010, a list can support up to 50 million items.. BUT.. Views are restricted to 5000 for end users, OOTB. What the? Remember: SharePoint is not a relational database. Rather, SharePoint lives inside a relational database. The overhead in bringing you all the SharePoint goodness is what results in the, at first glance, very low throttling thresholds. Further Info: http://msdn.microsoft.com/en-us/library/ff798465.aspx Throttling - Change the list view threshold, both for users and for site administrators. - Specify whether developers can use the object model to programmatically override the list view threshold. - Specify a daily time window when queries that exceed the list view threshold are permitted. This enables organizations to schedule resource-intensive maintenance operations, which would typically violate the list view threshold, during off peak hours. - Limit the number of lookup, person, or workflow status fields that can be included in a single database query. Further Info: http://msdn.microsoft.com/en-us/library/ff798465.aspx Indexing To improve the performance of a large list or library, you can index a column. An index on a column enables SharePoint to quickly analyze the data in that column, even when working with thousands or millions of items. For a view to quickly filter through a large number of items, the filter must be applied to a column that is indexed. It is important to consider the following when you create and use indexed columns: -Each additional column index consumes extra resources in the database. Therefore, you should add indexes only to columns that will be used actively in views on the list or library. -When you define a view in a list or library with lots of items, it is important to use a filter that will return no more than two thousand items. -Only one indexed column can be used in a view filter. You can filter on many different columns, but it is important that the first column that you use to filter the view has an index and that it sufficiently reduces the total number of items returned. Further Info: http://blog.dynatrace.com/2009/01/28/sharepoint-list-performance-how-list-column-indicesreally-work-under-the-hood/ Health Analyzer - SharePoint Health Analyzer is a feature in Microsoft SharePoint Foundation 2010 that enables administrators to schedule regular, automatic checks for potential configuration, performance, and usage problems in the server farm. - Any errors that SharePoint Health Analyzer finds are identified in status reports that are made available to farm administrators in Central Administration. - Status reports explain each issue, list the servers where the problem exists, and outline the steps that an administrator can take to remedy the problem. - In some cases, errors are repaired automatically as soon as they are found, and farm administrators are informed of the repairs. Further Info: http://msdn.microsoft.com/en-us/library/ee534957.aspx