SharePoint 2010: Tips for Dealing with Performance Issues
This Wiki page provides an overview of tips that may help you to deal with performance issues in your SharePoint environments:
- Get to know your application, its usage, and its response times by studying the IIS logs. One of the ways to do this is to use the free SharePoint Flavored Weblog Reader (SFWR) tool: http://gallery.technet.microsoft.com/The-SharePoint-Flavored-5b03f323
- Monitor performance counters that are relevant for SharePoint. The gallery post http://gallery.technet.microsoft.com/PowerShell-script-for-59cf3f70 shows an overview of a set of relevant performance counters that have been established after careful research, and a small PowerShell script for reading them. Also see http://technet.microsoft.com/en-us/library/ff758658.aspx for a different perspective.
- Even if your environment is already up and running, do capacity planning. This way you can check if you're crossing any important limits that might threaten performance. Check out http://sharepointdragons.com/2011/12/05/sharepoint-capacity-planning/ and http://sharepointdragons.com/2012/02/03/more-capacity-planning-links/ . Also check out http://gallery.technet.microsoft.com/Maxer-for-SharePoint-2010-8cd0f26f , Maxer for SharePoint 2010 is a tool that checks for capacity boundaries in existing SharePoint farms. Do remember that content database limits include remote BLOBs (if you use them) and that auditing has a great impact on capacity planning: http://www.sharepointedutech.com/2011/07/11/sharepoint-contentdb-guidance-too-many-shades-of-gray-along-with-a-little-brown/
- Use the SharePoint Diagnostic Data Provider/Logging database to get more insight into your environment. Check out http://sharepointdragons.com/2011/11/16/leveraging-the-logging-database-to-see-performance-counters/ and http://sharepointdragons.com/2011/12/05/using-the-entity-framework-to-see-the-contents-of-the-sharepoint-logging-database/ for more info. Also, see http://technet.microsoft.com/en-us/library/ff758658.aspx
- Get the SharePoint Administration Toolkit. It contains a load testing kit that can be employed to determine if an environment is able to handle the current load. It also contains SharePoint Diagnostic Studio 2010, a tool used by Microsoft personnel for troubleshooting. It's able to capture lots of information about performance counters, ULS log files, and so on. See http://sharepointdragons.com/2011/11/28/the-sharepoint-administration-toolkit-for-sharepoint-2010/ for more information. If you find you're having trouble that the ULS log files are empty, check out the following Wiki page: http://sharepointdragons.com/2012/04/11/solving-problems-with-uls-log-file-generation/
- Study the set up of the database environment, which is crucial for the success of your SharePoint environment. The SharePoint 2010 Administrator's Companion contains an excellent chapter about this: http://www.amazon.com/Microsoft-SharePoint-2010-Administrators-Companion/dp/0735627207/ref=sr_1_2?
s=books&ie=UTF8&qid=1330935904&sr=1-2
- Get PAL, a tool for troubleshooting performance troubles. See http://sharepointdragons.com/2011/12/30/when-you-have-performance-troubles-you-need-a-pal/ for more info. See http://www.loisandclark.eu/Pages/warmup.aspx for more info.
- Do performance and stress testing, even if you're already in trouble. It helps a lot to be able to simulate when a comparable environment gets into trouble. See http://sharepointdragons.com/2012/02/10/sharepoint-performance-and-stress-testing/ , http://sharepointdragons.com/2012/02/28/sharepoint-2010-testing/ , http://social.technet.microsoft.com/wiki/contents/articles/7828.sharepoint-2010-useful-information-about-testing.aspx , and http://technet.microsoft.com/en-us/library/ff758659.aspx
- Use tools to test traffic on-the-fly:
F12 Developer Toolbar (Internet Explorer 7 and later), Fiddler ( http://www.fiddler2.com/fiddler2/ ), YSlow ( https://addons.mozilla.org/de/firefox/addon/yslow/ ), FireBug ( https://addons.mozilla.org/de/firefox/addon/firebug/ ), and WireShark (http://www.wireshark.org/)
- Use the DebugDiag tool (http://www.microsoft.com/en-us/download/details.aspx?id=26798) to help troubleshoot issues.
- Use 3rd party analysis tools: http://webtrends.com/products/integrations/sharepoint/ , http://www.intlock.com/intlocksite/productsandservices/cardiolog/cardiolog.asp , http://www.intlock.com/intlocksite/productsandservices/cardiolog-sharepoint-marketing-suite/default.asp (that includes Cardiolog), http://www.idera.com/Free-Tools/SharePoint-perf-monitor/ , or http://www.idera.com/Free-Tools/SharePoint-admin-toolset/
- More often than not, performance problems are caused by custom software. Demand that each piece of custom software gets shipped with a configurable diagnostics system that can be used to determine any pain points in there.
- Study other performance and capacity test results and recommendations: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=12768 and http://technet.microsoft.com/en-us/library/ff608068(office.14).aspx
- The first authenticated user may experience a very poor response time. Consider warming up SharePoint. See http://www.loisandclark.eu/Pages/warmup.aspx for more info.
- Study warnings and errors in the ULS log files using tools such as ULS Viewer and SPLIT. See http://www.jeremytaylor.net/2012/07/14/sharepoint-uls-log-viewer-tool-comparison-and-verdict/ for more info.
- If you're allowed to: enable ASP.NET profiling.
- If you're allowed to: enable the SharePoint developer dashboard.
- Use SQL DMVs to analyze the state of your SQL database server, also taking into consideration the performance of other applications unrelated to SharePoint, but hosted on the same database server.
- If you're allowed to: enable SQL Profiler to check SQL Server database problems on the fly.
- Shrink the SharePoint content database transaction log files if they become too big or when it's size increases abnormally: http://sharepointdragons.com/2012/02/08/managing-sharepoint-2010-log-files/
- Enable BLOB cache. See http://technet.microsoft.com/en-us/library/cc261797.aspx , http://www.ittreats.com/microsoft/aspnet/configure-blob-cache-for-sharepoint-2010-web-applications.html
- Enable Profile cache. See http://technet.microsoft.com/en-us/library/cc261797.aspx
- Enable object cache. See http://technet.microsoft.com/en-us/library/cc261797.aspx
- Enable output cache.
- Enable IIS compression. See http://weblogs.asp.net/owscott/archive/2009/02/22/iis-7-compression-good-bad-how-much.aspx
- Configure list throttling. See http://technet.microsoft.com/en-us/magazine/gg491393.aspx
- Use list indexes: http://blog.dynatrace.com/2009/01/28/sharepoint-list-performance-how-list-column-indices-really-work-under-the-hood/
- Limit the maximum upload file size.
- If you're working with extremely large files, consider using Remote Blob Storage (RBS): http://www.loisandclark.eu/Pages/blob.aspx and http://www.sharepointedutech.com/2011/07/11/sharepoint-contentdb-guidance-too-many-shades-of-gray-along-with-a-little-brown/
- Use the SharePoint Dispose Checker Tool (SPDispose) to find memory leaks in custom software: http://archive.msdn.microsoft.com/SPDisposeCheck
- Use MSOCAF check code before submitting it to Microsoft for BPOS/Office365. You can find it here: https://caf.sharepoint.microsoftonline.com/
- Use System Center Operations Manager for monitoring SharePoint or a 3rd party tool like Quest Foglight for ASP. Foglight can capture trends like page load times as well as consolidate performance counters.
- Follow best practices when using the Content Query Web Part (CQWP): http://techblog.ranjanbanerji.com/post/2007/07/16/Content-Query-Web-Part-(CQWP)-SharePoint-2007-Performance.aspx
- Get the Process Monitor tool for monitoring real-time file system, registry, and process/thread activity: http://sharepointdragons.com/2012/04/09/process-monitor/
- Use a 3rd party performance optimizer tool for SharePoint (that uses compression, caching, and action prioritizing) such as optimizer: http://www.riverbed.com/us/products/stingray/stingray_aptimizer.php
- If page load is very slow, check if the ACL count is the problem, even when it's well within the official limits: http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/aa37c03c-11b1-421c-baf7-47f27349e3e9
- If the SharePoint 2010 Solution is Sandboxed, you can leverage Visual Studio 2010 Stand alone Profiler for Sampling and Profiling SharePoint Sandbox Code /en-us/previous-versions/technet-magazine/jj158953(v=msdn.10)
- If you are already using a hardware load balancer, like F5 BIG-IP, you can take advantage of built-in web acceleration capabilities to increase SharePoint performance. http://www.f5.com/pdf/application-ready-network-guides/microsoft-sharepoint-2010-arsg.pdf