Is your farm struggling to server your organization? How long is it taking between page requests? Where is your bottleneck in your farm? Is your SQL Server tuned properly? Worried about upgrading due to poor performance? We will look at various tools for analyzing and measuring performance of your farm. We will look at simple SharePoint and IIS configuration options to instantly improve performance. I will discuss advanced approaches for analyzing, measuring and implementing optimizations in your farm.
2. Special Thanks to our Platinum Sponsor
…and our Gold Sponsor
SPSUtah 2014
3. About Brian Culver
• SharePoint Solutions Architect for Expert Point Solutions
• Based in Houston, TX
• Author
• SharePoint 2010 Unleashed
• Upcoming SharePoint 2013 Workflows
• Various White Papers
• Speaker and Blogger
SPSUtah 2014
5. Software Boundaries
• Understand the tested (by Microsoft) performance and capacity limits of SharePoint
• General recommendations for average hardware and usage
• Many come from MSIT
• > 150,000 employees and vendors
• Very large amounts of content
• Globally accessed
• Meet various goals including:
• Backup and restore to meet standard SLAs
• Ensure good performance early on with low hardware standards and low knowledge requirements
• Allow configuration to scale and maintain decent performance
• SharePoint 2013 Software Boundaries
• http://technet.microsoft.com/en-us/library/cc262787.aspx
• SharePoint 2010 Software Boundaries
• http://technet.microsoft.com/en-us/library/cc262787(v=office.14).aspx
• SharePoint 2007 Software Boundaries
• http://technet.microsoft.com/en-us/library/cc262787(v=office.12).aspx
SPSUtah 2014
6. What is Poor Performance?
• Increased end user response time
• Reduced overall system throughput
SPSUtah 2014
7. Infrastructure Performance
• Active Directory
• Exchange
• Desktops
• Network Topology
• WAN Optimization
• SharePoint Farm
• Web Front Ends
• Application Servers
• Database Servers
SPSUtah 2014
8. SharePoint Farm Performance
• 3-4 Web Servers per DC
• 8 Web Servers per SQL Server
• Bandwidth and Latency<1 ms
• 10 Application Pools per web server
• 20 web applications per farm
• Search: Indexing
• iFilters
• # of servers
• Scheduling and throttling of crawling
• “Boundaries” vs. “Supported”
SPSUtah 2014
Test, Measure, and Re-test
9. Search Performance
• Crawl Time: How long does the overall time the crawl takes?
• Corpus Size: How big is the corpus size?
• Indexing Speed: How many documents are being indexed per
second?
SPSUtah 2014
11. SharePoint Farm Performance
• Authentication Performance
• # of round trips
• Processing speed of provider
• Fastest to Slowest
• Anonymous
• Claims Authentication
• Kerberos
• NTLM (Classic Windows Authentication
• Basic
• Forms and WebSSO
• ADFS
SPSUtah 2014
In 2013, Claims is
the default. Avoid
Classic
Authentication.
12. SharePoint Farm Performance
• Which Machines cause the bottleneck?
• Watch
• CPU
• Memory
• Disk I/O
• Network
SPSUtah 2014
13. SharePoint Farm Performance
• Requests per Second (RPS): How many requests you can service? RPS
is used for measuring how many pages are delivered. It can measure
how many searches are executed.
• Requests per Hour (RPH): Average user requests in an hour.
• Page Time (TTLB): How long it takes to deliver a page back to the
client? Used in conjunction with RPS.
• For example, our farm needs to deliver 100 RPS and pages should
reach the client within 5 seconds.
SPSUtah 2014
14. SharePoint Farm Performance
• Understand SharePoint workload
• Use RAID 10 over other RAID ##
• And yes, RAID 10 for SharePoint is better than RAID 5, 50, 60, etc.
• Separate your database files
• ** TempDB ** is the most heavily used DB **
• Create a TempDB per proc
• Usage database is very busy
• Search database is very busy
• Log files separate from data files
• Place different databases on different volumes
• SQL Server files separate from other uses (e.g. OS files)
• Separate your files according to I/O workload.
• A single volume may be fast enough to handle several databases.
SPSUtah 2014
15. Common Performance Problems
• Large Lists
• Lots of Web Parts importing non-cached data from various
places
• Cross-List queries and CBQ Web Parts
• Too Deep Site Structures
• Too many sites in a site collection
• Too many site collections in a Content DB
• Too many ACLs
SPSUtah 2014
16. SharePoint Performance
We will discuss the following:
• Large List Control
• Performance Throttling
• Developer Dashboard
• Great for IT Pros and Developers alike
• Caching
• IIS 7.0/8.0
• Content Query Web Part
SPSUtah 2014
17. Large List Control
So what is new?
• Lists and Libraries hold 50,000,000 items
• Recommended List View
• Size:
• Why 2000 or 5000?
• Server Overload
• Solution:
• List View Throttling
SPSUtah 2014
18. List View Throttling
• Limits the number of list items returned per view.
• Operations that exceed this limit are prohibited.
• Recommended to configure at the Web Application level.
• Default List View Threshold values:
• 5000 for Users
• 20000 for Auditors and Administrator
SPSUtah 2014
19. List View Throttling
• List can be configured individually via API
• Daily Time Window for Large Queries: Turn off Throttling during
a daily window
• Comes with a Warning
• List View Lookup Threshold: How many complex fields are
allowed
• Lookup, Person/Group, or workflow status fields
• Result in JOINs
SPSUtah 2014
20. Performance Throttling
• HTTP Request Monitoring and Throttling: Throttle Performance
during high server load
• SharePoint monitors performance counters and uses
threshhold values
• Get 503 request errors
• Timer Job fails to start
• PUT request still allowed
• Search can trigger performance throttling and cause issues
SPSUtah 2014
21. Performance Throttling
• Protects the server during peak loads. Monitors:
• Available Memory
• CPU %
• ASP.NET Queue
• Wait time in queue
• Checked every 5 seconds
• 3 over limit start throttling, logs events
• 1 below limit stop throttling
• Configure via PowerShell and Object Model
• Add/Remove counters via Object Model
SPSUtah 2014
28. Caching
• Page Output Cache: for generated HTML markup for future requests
• Cache frequently used Lists and reduce round trips to the database
• Object Cache: for common objects and query results
• Content Query Web Part
• List Views
• Disk-Based (BLOB) Cache: for commonly requested files on WFE disks
• Automatically cache BLOBs and reduce round trips to the content
databases
SPSUtah 2014
29. Object Cache Settings
• Configure caching via the Site
Settings
• Configure caching via web.config
for Web Applications.
• Web.config overrides the Site
Settings.
SPSUtah 2014
30. Output Cache Settings
• Configure caching via the Site
Settings
• Configure caching via
web.config for Web
Applications.
• Web.config overrides the
Site Settings.
SPSUtah 2014
31. Publishing Site Output Cache (Site Output Cache)
• Now configurable per Site/Web
• Use the Publishing Images Library (Images)
• Use Pages Publishing Library (Pages)
SPSUtah 2014
33. IIS 7.0/8.0 Performance
• Design pages for fast downloading and rendering
• Lazy loading of large JavaScript files
• Clustering images
• Reduce image requests
• Reduce the number of secured items in pages
• Each secured request results in two roundtrips
• Validate credentials
• Enumeration of groups the user belongs to
• Leverage IIS Compression
• Static Compression
• Dynamic Compression
SPSUtah 2014
34. IIS 7.0/8.0 Performance
• Reduce amount of data sent to client and reduce the number of
trips a browser makes.
• View State Caching and Reduce Payload.
• Cache View State to be used in subsequent post-backs
• Minify JavaScript
• Remove redundant white spaces and new lines
• Reduce File Requests
• Merge multiple JavaScript/CSS files in one request
• Microsoft didn’t get the memo on this one in SP2013
SPSUtah 2014
35. IIS 7.0/8.0 Performance
• Increase static compression level to 9 and dynamic to 9
APPCMD.EXE set config -section:httpCompression [name='gzip'].staticCompressionLevel:9 -[name='gzip'].dynamicCompressionLevel:9
• Change dynamic compression CPU utilization threshold range from 100100% (This effectively disables it)
APPCMD.EXE set config –section:httpCompression /dynamicCompressionDisableCpuUsage:100
APPCMD.EXE set config –section:httpCompression /dynamicCompressionEnableCpuUsage:100
• Enable caching before insertion into page output cache
APPCMD.EXE set config –section:urlCompression /dynamicCompressionBeforeCache:true
SPSUtah 2014
37. Content Search Web Part
• Powerful web part for searching, aggregating and rolling up
information from literally any source.
• Best Performance period!
• Security Trimming
• Cross Site Collection scoping
• Very flexible
• Use Display Templates to customize output.
SPSUtah 2014
38. Content Query Web Part
• Powerful web part for aggregating and rolling up information
from various sources.
• Designed to leverage the object cache by caching the query
results.
• In MOSS 2007, Disabled by default
• In SP2010 and SP2013, Enabled by default
• Best performance when content shares the same permissions
and doesn’t change often.
SPSUtah 2014
39. Custom Code
• Common cause for poor performance
• Custom inefficient features
SPSUtah 2014
41. Developer Dashboard
• Allows monitoring page loads and performance
• Information:
• Times to render page
• Page checkout level
• DB query info
• Web part processing time
• Any critical events or alerts
SPSUtah 2014
43. Developer Dashboard
ON
•
Always ON for all users
OFF
•
Completely OFF for all users
NOTE: Ondemand is only available in SP2010
$csvc = [Microsoft.SharePoint.Administration.SPWebService]::ContentService;
$devdash = $csvc.DeveloperDashboardSettings ;
$devdash.DisplayLevel = "On“;
$devdash.Update();
SPSUtah 2014
45. Visual Studio Test Suite
• Test throughout your testing
lifecycle of planning, testing
and tracking your progress
• Use with TFS to automate
builds, deployments and
testing
SPSUtah 2014
46. Fiddler
• Great, light weight tool. Provides quick
overview of the website performance.
• Free (still …)
• It can also record scripts that you can use in
Visual Studio Test Suite.
• neXpert: Fiddler Add-on that checks for classic
performance best practices and produces a
HTML report on the issues found in a Fiddler
capture.
SPSUtah 2014
47. YSlow
• Analyzes web pages and suggests ways
to improve their performance based on
a set of rules for high performance web
pages.
• Grades web page based rulesets.
• Suggests performance improvements,
summarizes page components,
statistics for the page, and provides
tools for performance analysis.
SPSUtah 2014
49. Constructive Feedback Is Appreciated
Brian – Your
presentation
was …
Thanks!
Good
Demos!
SPSUtah 2014
Great information,
but would like to
have learned more
about [Insert Topic]