sharepoint server 2013 farm architecture and performance by ben curry - sptechcon
DESCRIPTION
Technical Class:TRANSCRIPT
• Founding Partner of Summit 7 Systems, Inc.
• Summit 7 Systems Lead Architect• Six time Microsoft® MVP for SharePoint
Server• CISSP, Microsoft Certified Trainer, CCNA,
MCITP: SharePoint Server• Author of several SharePoint books by
Microsoft PRESSS• Master SCUBA Diver Trainer• [email protected]
BEN CURRY / MANAGING PARTNER
@curryben
http://summit7systems.com/blogs/author/ben-curry/
» Summit 7 Systems was chosen by KMWorld Magazine as one of the top 100 Companies that Matter in Knowledge Management along with companies such as Microsoft, Oracle and IBM.
» Summit 7 Systems was named to the 2011 and 2012 CRN Next-Gen 250 List as a company bringing innovative processes, methodologies and models to the solution provider industry.
» Top 1% of Microsoft Partners Worldwide» Summit 7 Systems was named #6 on the 2012 CRN Fast Growth 100 based on our 2009 – 2011 growth of over
930% per year.»~ 50% of Technical Staff hold US Government SECRET Clearances.»Service Disabled Veteran Owned Small Business (SDVOSB).
Summit 7 systems is a premier provider of consulting and implementation services specializing on the Microsoft SharePoint Platform and FAST Enterprise Search.
» Summit 7 Systems was chosen by KMWorld Magazine as one of the top 100 Companies that Matter in Knowledge Management along with companies such as Microsoft, Oracle and IBM.
» Summit 7 Systems was named to the 2011 and 2012 CRN Next-Gen 250 List as a company bringing innovative processes, methodologies and models to the solution provider industry.
» Top 1% of Microsoft Partners Worldwide» Summit 7 Systems was named #6 on the 2012 CRN Fast Growth 100 based on our 2009 – 2011 growth of over
930% per year.»~ 50% of Technical Staff hold US Government SECRET Clearances.»Service Disabled Veteran Owned Small Business (SDVOSB).
OUR BACKGROUND
SERVICESSharePoint QuickStartInformation Architecture and Governance DevelopmentUpgrade and MigrationBranding and Design (User Experience)Web Content Management Design and DeploymentSharePoint SearchCustom Workflow or Web Part DevelopmentInfoPath Forms and WorkflowsPerformance Baselines and Best Practices OptimizationMapping Business Process to Software PlatformsCloud Services Design and ProvisioningRemote Support ContractsCompliance Quickstart
SOFTWARE PLATFORMSFAST Enterprise SearchSharePoint 2007SharePoint 2010 SharePoint 2013Office PlatformSitecore
SOLUTION AREASSharePoint Platform SolutionsEnterprise SearchEnterprise Content ManagementInternet / Web Content ManagementExtranet SolutionsIntranet SolutionsBusiness Process ManagementEnterprise Project ManagementExchange Server
SERVICESSharePoint QuickStartInformation Architecture and Governance DevelopmentUpgrade and MigrationBranding and Design (User Experience)Web Content Management Design and DeploymentSharePoint SearchCustom Workflow or Web Part DevelopmentInfoPath Forms and WorkflowsPerformance Baselines and Best Practices OptimizationMapping Business Process to Software PlatformsCloud Services Design and ProvisioningRemote Support ContractsCompliance Quickstart
SOFTWARE PLATFORMSFAST Enterprise SearchSharePoint 2007SharePoint 2010 SharePoint 2013Office PlatformSitecore
SOLUTION AREASSharePoint Platform SolutionsEnterprise SearchEnterprise Content ManagementInternet / Web Content ManagementExtranet SolutionsIntranet SolutionsBusiness Process ManagementEnterprise Project ManagementExchange Server
PLATFORMS, SOLUTIONS & SERVICES
COMMERCIAL PAST PERFORMANCEMEDICAL/PHARMA FINANCE ENERGY/CHEMICAL EDUCATION MANUFACTURING
University of Utah Medical Center
St Jude Children’s Research Hospital
Nektar Therapeutic
Pfizer
OneWest Bank
BBVA Compass
WellPoint
Bank Independent
Otter Tail Power
Nova Chemicals
Champion Technologies
QuikTrip
Kraton
Kentucky Community and Technical College
System
Texas A&M University, Qatar
UNC-Charlotte
Escola de Sao Paulo, Macau, China
Hawker-Beechcraft
Kimberly-Clark
Coca Cola Bottling Consolidated
SC Johnson
Nucor Steel
STATE & LOCAL PAST PERFORMANCEMINNESOTA
DEPARTMENT OF TRANSPORTATION
ALABAMA MEDICAID
KENTUCKY COMMUNITY & TECHNICAL COLLEGE SYSTEM
GALVESTON COUNTY, TEXAS
CITY OF CHARLOTTE,
NORTH CAROLINA
COUNTY OF SANTA CLARA, CALIFORNIA
1 Year
902TS Professional Services Contract
Holder
SharePoint 2007 to BPOS-Dedicated SharePoint 2010
Migration
Business Data Catalog
Development
14 Months
AvePoint DocAve Architecture,
Implementation and Support
Operations and Maintenance
through AnchorPoint
Strategy and GovernanceEmployee Portal
SharePoint 2007 to SharePoint 2010 Migration
SharePoint 2010 to SharePoint 2013 Migration
Business Process Automation
Project Management Office
SiteCore Web Content Management
Operations and Maintenance through AnchorPoint
18 Months
SharePoint 2007 to SharePoint 2010
Migration
SharePoint 2010 Public Farm
Branding, Custom Development and Website Buildout
Operations and Maintenance through
AnchorPoint
4 Months
SharePoint 2010 Extranet
Requirements, Planning and
Design
8 Months
SharePoint 2010 Requirements,
Design and Implementation
FEDERAL PAST PERFORMANCE
REDSTONE TEST CENTER
MISSILE DEFENSE AGENCY
SPACE AND MISSILE DEFENSE
COMMAND
NATO MEADS MANAGEMENT
AGENCY
DEPARTMENT OF VETERANS AFFAIRS
INTERNAL REVENUE SERVICE
Sub to ERC and Bering Straits Information Technology
22 Months
Information Architecture Development
System Stabilization
SharePoint 2010 Migration
Sub to Boeing, SRA International and
Trident Group
10 Months
Information Architecture Development
SharePoint Logical and Physical Architecture
Dashboarding and Business
Intelligence
Sub to ASD
2 Months
Custom Workflow Development
SharePoint Branding and UX
Sub to KAI Global
5 Months
SharePoint and K2 Workflow
Development / Troubleshooting
Sub to Dell / Quest Software
9 Months
Quest SharePoint Toolset
Requirements, Design and
Implementation
Sub to Dell / Quest Software
9 Months
SharePoint 2007 to SharePoint 2010
Migration
SHAREPOINT SERVER 2010
• Enterprise Search• PerformancePoint• Excel Calc Services• BCS• InfoPath• Word Conversions• Visio Graphics• Managed Metadata• User Profiles• Web Analytics
• Project Server• FAST for SharePoint• Sandboxed Solutions• Office Web Apps• Web Applications• Usage Logging• Access Services• Secure Store
OLD SCHOOL 2007
WebQueryIncoming Email
WebQueryIncoming Email
Index ServerExcel ServicesDocument Conversions
SQL ServerSQL Server
SHAREPOINT SERVER 2013 FARM
WebQueryIndexIncoming EmailViso Graphics ServiceBCSManaged Metadata
WebQueryIndexIncoming EmailViso Graphics ServiceBCSManaged Metadata
CrawlerExcel ServicesDocument ConversionsProject ServerSecure StorePerformancePointUser Profile SyncUser Profiles
SQL ServerReporting ServicesAnalysis Services
SQL ServerReporting ServicesAnalysis Services
CrawlerExcel ServicesDocument ConversionsProject ServerSecure StorePerformancePointUser ProfilesWeb Analytics
WEB APPLICATION ARCHITECTURE
SiteCollection
SiteCollection
SiteCollection
SiteCollection
http://portal.contoso.com
ContentDatabase
ContentDatabase
ContentDatabase
WEB APPLICATION ARCHITECTURE
SiteCollection
SiteCollection
SiteCollection
SiteCollection
http://portal.contoso.com
ContentDatabase
ContentDatabase
ContentDatabase
SQL Server
ApplicationPool
SERVICE APPLICATION ARCHITECTURE
ServiceApplication
Service Machin
e Instanc
e
Service Machin
e Instanc
e
Service Application Proxy
Web Application
Service Instance Service Instance
SCALING SEARCH
Crawl Server (component)› Temp Indexing› Connects to Crawl Database
Query Server (component)› Index Partition and Query Component› Can be Primary or Failover
Property DatabaseCrawl DatabaseCrawling Target Server (dedicated host for crawling)
SEARCH ARCHITECTURE
SQL Server - SearchDB- PropertyDB
SQL Server - SearchDB- PropertyDB
Misc Apps- Crawler
Misc Apps- Crawler
Web- Crawl Target
WebQueryIndex
WebQueryIndex
CAPACITY & PERFORMANCE PLANNING
Research and Study› http://technet.microsoft.com/en-us/library/cc262971.aspx
Define your targetsCreate Logical ArchitectureDesign Physical ArchitectureTest and validateLog and MonitorAdjust architecture as needed
MY TOOLBOX
Internet Explorer Developer ToolbarVisual Round-trip Analyzer
› Free Download› Requires Netmon 2.x
FiddlerDev DashboardVisual Studio Team Suite & Ultimate versions
DEVELOPER DASHBOARD
$DevDashboardSettings = [Microsoft.SharePoint.Administration.SPWebService]::ContentService.DeveloperDashboardSettings;
$DevDashboardSettings.DisplayLevel = 'OnDemand';
$DevDashboardSettings.RequiredPermissions = 'EmptyMask';
$DevDashboardSettings.TraceEnabled = $true;
$DevDashboardsettings.Update()
WEB APPLICATION BOUNDARIESLIMIT MAXIMUM VALUE LIMIT TYPE NOTES
Content database
300 per Web application
Supported
Administrative operations such as creating a new site collection will experience decrease in performance. Use Windows PowerShell to manage the Web application when a large number of content databases are present.
Zone 5 per Web application BoundaryThe number of zones defined for a farm is hard-coded to 5.
Managed path 20 per Web application Supported
Managed paths are cached on the Web server, and CPU resources are used to process incoming requests against the managed path list.
Application Pools
10 per Web Server Supported RAM and Workload
CONTENT DATABASE BOUNDARIES
Content database size200 GB per content database.**4TB w/ restrictions
Supported
+200GB requires disk I/O of .25 IOPS per GB, but 2 IOPS per GB is recommended.
Robust DR strategy
Site collections per content database
2,000 recommended5,000 maximum
Supported
Strongly recommend limiting the number of site collections in a content database to 2,000. *Up to 5,000 site collections in a database are supported.
Remote BLOB Storage (RBS) storage subsystem on Network Attached Storage (NAS)
Time to first byte of any response from the NAS cannot exceed 20 milliseconds
Boundary
From the time that SharePoint Server 2010 requests a BLOB, until it receives the first byte from the NAS, no more than 20 milliseconds can pass.
VERY LARGE SCALE DEMO
14.4TB content database failed over in 45 seconds…http://blogs.msdn.com/b/pandrew/archive/2011/10/06/video-published-of-the-full-farm-failover-demo-in-the-sharepoint-2011-conference-keynote.aspx
LISTS AND LIBRARIES BOUNDARIESFile size 2 GB Boundary The default maximum file size is 50 MB.
Documents 30,000,000 per library SupportedVaries depending on organization, type and size.
Items 30,000,000 per list SupportedThis value may vary depending on the number of columns in the list and the usage of the list.
List view threshold
5,000 ThresholdMaximum number of items that a database operation can simultantouesly process (outside the daily time window)
Subsite 2,000 per site view ThresholdNavigation and management performance will decrease significantly as the number of subsites grows.
SEARCH BOUNDARIESSharePoint search service applications 20 per farm Supported ..that’s more than you need!
Crawl databases and database Items
*10 crawl databases per search service application*25 million items per crawl database
ThresholdThe supported limit is 10 crawl databases per SharePoint Search service application.
Crawl components 16 per search service application Threshold
The total number of crawl components per server must be less than 128/(total query components) .
Index partitions 20 per search service application; 128 total Threshold The boundary for the total number
of index partitions is 128.
Indexed items100 million per search service application; 10 million per index partition
Supported
Crawl log entries 100 million per search application Supported
Property databases 10 per search service application Threshold
Query components 128 per search application ThresholdConcurrent crawls 20 per search application Threshold
MINE 2007 USAGE CONTENT
Users› Browser Read› Browser Write› Outlook RSS› Outlook Sync› OneNote› Offline Clients› Collab› Management
• Operations– Indexing– Search Crawling– Backup/Restore– CooP– Shared Services
DOCUMENT CURRENT CONTENT
Database SizesNumber of content databasesNumber of site collections
› Current Quotas!
Number of Web appsSearch Index and DB sizeUser Profiles
DEFINE TARGETS
Server availabilityWeb application availabilityService Application availabilityResponse TimesFour ‘9s’ is achievable
› (but it is expensive…)
OVERVIEW OF INFRASTRUCTURE TESTING
Test single server or modify affinity/stickyFirewall ports from controller and agents to controller/agents/serversRemote Registry permissions to tested servers
WHY TEST?
Ensure adequate resourcesTest performance impact of Web partsTest any major configuration change
DON’T GUESS. KNOW!
MY FARM SETUP
SharePoint Server 2010SQL Server 2008 R2Visual Studio Ultimate 2010Windows Server 2008 R2
FE01(Web + Query)
FE02(Web + Query)
App01(Applications)
APP01SQL Server
PREPARE VISUAL STUDIO
Setup Results Database on SQL Server 2005 or 2008Remove default tests if desiredSetup the test controller and agents
BUILD A TESTING 'RIG’
Requires Visual Studio 2010 Ultimate, Test, or Team Suite Editions
› If you don’t see ‘Test’ as an option, you have the wrong version
Must have one controller› Use multiple agents for better real-world load
Create new Project using the ‘Test Project’ templateCreate Load test results store (DB)Set loadtest database as the repository
Tip: Use loadtestresultsrepository.sql to create the repository database:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE’
CREATE A TEST PROJECT AND WIRE UP THE REPOSITORY
TEST WEB PART IMPACT
Record Web test for the hosting pageBaseline load time
› Change run settings to test browser version and WAN clients
Load Web partTest response timeShould not be used for production testing, but will give you a good idea of Web part impact
CREATE LOAD TEST
Create load test using one or more Web tests› Choose % mix for your environment› For new implementations or complete
unknowns, use the posted mix on TechNet
Document Load Test Settings› Be sure to use the same settings when
comparing baselines and changes
Create Peak and off-peak baselines
READING THE RESULTS
Processor time and Disk I/O are criticalUse Systems Center Operations Manager management pack documentation for performance counters to monitor during tests
› Or rule author view
Load Test Summary is usefulAdd custom counters for Search, etc.
MONITORING
Health ReportsWeb AnalyticsAdministrative ReportsTimer Job StatusSQLIO Benchmark Toolhttp://go.microsoft.com/fwlink/?LinkID=105586
AGGREGATE PERFORMANCE
Add-SPDiagnosticsPerformanceCounter -Category "Processor" -Counter "% Processor Time" -Instance "_Total" -WebFrontEnd
WHAT ARE WE LOOKING FOR?Processor
Processor - % Processor Time Over 75-85%Upgrade processorIncrease number of processorsAdd additional server(s)
Disk
Avg. Disk Queue LengthGradually increasing, system not in a steady state and queue is backing up
Increase number or speed of disksChange array configuration to stripeMove some data to an alternative server
% Idle Time Greater than 90% Increase number of disksMove data to an alternative disk or server
% Free Space Less than 30% Increase number of disksMove data to an alternative disk or server
Memory
Available Mbytes Less than 2GB on a Web server.
Add memory.Note: SQL server available memory will be low, by design, and does not always indicate a problem.
Cache Faults/sec Greater than 1Add memory Increase cache speed or size if possibleMove data to an alternative disk or server
Pages/sec Greater than 10 Add memory
Paging File
% Used and % Used Peak
The server paging file, sometimes called the swap file, holds "virtual" memory addresses on disk. Page faults occur when a process has to stop and wait while required "virtual" resources are retrieved from disk into memory. These will be more frequent if the physical memory is inadequate.
Add memory
NIC
Total Bytes/secOver 40-50% of network capacity. This is the rate at which data is sent and received via the network interface card.
Investigate further by monitoring Bytes received/sec and Bytes Sent/sec.Reassess network interface card speedCheck number, size, and usage of memory buffers
Process
Working Set Greater than 80% of total memory Add memory
% Processor Time Over 75-85%.Increase number of processorsRedistribute workload to additional servers
ASP.NET
Application Pool Recycles Several per day, causing intermittent slowness.Make sure that you have not implemented settings that automatically recycle the application pool unnecessarily throughout the day.
Requests Queued Hundreds or thousands of requests queued.Implement additional Web serversThe default maximum for this counter is 5,000, and you can change this setting in the Machine.config file
Request Wait TimeAs the number of wait events increases, users will experience degraded page rendering performance.
Implement additional Web servers
Requests Rejected Greater than 0 Implement additional Web servers
WHAT ARE WE LOOKING FOR?
PROCESSOR & PROCESSESProcessor
% Processor Time
This shows processor usage over a period of time. If this is consistently too high, you may find performance is adversely affected. Remember to count "Total" in multiprocessor systems. You can measure the utilization on each processor as well, to ensure balanced performance between cores.
Process
- Working SetThis counter indicates the current size (in bytes) of the working set for a given process. This memory is reserved for the process, even if it is not in use.
- % Processor TimeThis counter indicates the percentage of processor time that is used by a given process.
Thread Count (_Total) The current number of threads.
PERFORMANCE COUNTERS
Processor
You should monitor processor performance to ensure that all processor usage does not remain consistently high (over 80 percent) as this indicates that the system would not be able to handle any sudden surges of activity. And that in the common state, you will not see a domino effect if one component failure will bring the remaining components to a malfunctioning state. For example – if you have three Web servers, you should make sure the average CPU across all servers is under 60% so that if one fails, there is still room for the other two to pick up the extra load.
Network Interface Monitor the rate at which data is sent and received via the network interface card. This should remain below 50 percent of network capacity.
Disks and Cache
There are a number of logical disk options that you should monitor regularly. The available disk space is essential in any capacity study, but you should also review the time that the disk is idle. Dependent on the types of applications or services you are running on your servers, you may review disk read and write times. Extended queuing for write or read function will affect performance. The cache has a major impact on read and write operations. You must monitor for increased cache failures.
Memory and Paging File Monitor the amount of physical memory available for allocation. Insufficient memory will lead to excessive use of the page file and an increase in the number of page faults per second.
DISK COUNTERS
Avg. Disk Queue Length
This shows the average number of both read and write requests that were queued for the selected disk during the sample interval. A bigger disk queue length may not be a problem as long as disk reads/writes are not suffering and the system is working in a steady state without expanding queuing.
Avg. Disk Read Queue Length The average number of read requests that are queued.
Avg. Disk Write Queue Length The average number of write requests that are queued.
Disk Reads/sec The number of reads to disk per second.
Disk Writes/sec The number of writes to disk per second.
MEMORY COUNTERS
- Available MbytesThis shows the amount of physical memory available for allocation. Insufficient memory will lead to excessive use of the page file and an increase in the number of page faults per second.
- Cache Faults/sec
This counter shows the rate at which faults occur when a page is sought in the file system cache and is not found. This may be a soft fault, when the page is found in memory, or a hard fault, when the page is on disk.The effective use of the cache for read and write operations can have a significant effect on server performance. You must monitor for increased cache failures, indicated by a reduction in the Async Fast Reads/sec or Read Aheads/sec.
- Pages/secThis counter shows the rate at which pages are read from or written to disk to resolve hard page faults. If this rises, it indicates system-wide performance problems.
Paging File
- % Used and % Used Peak
The server paging file, sometimes called the swap file, holds "virtual" memory addresses on disk. Page faults occur when a process has to stop and wait while required "virtual" resources are retrieved from disk into memory. These will be more frequent if the physical memory is inadequate.
ASP.NETRequests Total The total number of requests since the service was started.
Requests QueuedMicrosoft SharePoint Foundation 2010 provides the building blocks for HTML pages that are rendered in the user browser over HTTP. This counter shows the number of requests waiting to be processed.
Request Wait TimeThe number of milliseconds that the most recent request waited in the queue for processing. As the number of wait events increases, users will experience degraded page-rendering performance.
Requests RejectedThe total number of requests not executed because of insufficient server resources to process them. This counter represents the number of requests that return a 503 HTTP status code, indicating that the server is too busy.
Requests Executing (_Total)
The number of requests currently executing.
Requests/Sec (_Total)
The number of requests executed per second. This represents the current throughput of the application. Under constant load, this number should remain within a certain range, barring other server work (such as garbage collection, cache cleanup thread, external server tools, and so on).
SQL SERVERGeneral Statistics
This object provides counters to monitor general server-wide activity, such as the number of current connections and the number of users connecting and disconnecting per second from computers running an instance of SQL Server.
User ConnectionsThis counter shows the amount of user connections on your instance of SQL Server. If you see this number rise by 500 percent from your baseline, you may see a performance reduction.
Databases
This object provides counters to monitor bulk copy operations, backup and restore throughput, and transaction log activities. Monitor transactions and the transaction log to determine how much user activity is occurring in the database and how full the transaction log is becoming. The amount of user activity can determine the performance of the database and affect log size, locking, and replication. Monitoring low-level log activity to gauge user activity and resource usage can help you to identify performance bottlenecks.
Transactions/secThis counter shows the amount of transactions on a given database or on the entire SQL Server instance per second. This number is to help you create a baseline and to help you troubleshoot issues.
Locks This object provides information about SQL Server locks on individual resource types.Number of Deadlocks/sec This counter shows the number of deadlocks on the SQL Server per second. This should normally be 0.
Average Wait Time (ms) This counter shows the average amount of wait time for each lock request that resulted in a wait.Lock Wait Time (ms) This counter shows the total wait time for locks in the last second.
Lock Waits/sec This counter shows the number of locks per second that could not be satisfied immediately and had to wait for resources.
SQL Statistics
This object provides counters to monitor compilation and the type of requests sent to an instance of SQL Server. Monitoring the number of query compilations and recompilations and the number of batches received by an instance of SQL Server gives you an indication of how quickly SQL Server is processing user queries and how effectively the query optimizer is processing the queries.
Buffer CacheThis object provides counters to monitor how SQL Server uses memory to store data pages, internal data structures, and the procedure cache, as well as counters to monitor the physical I/O as SQL Server reads and writes database pages.