Welcome to MSDN Blogs Sign in | Join | Help

Performance, Performance, Performance

We just got out of a lengthy performance review on our way to Beta 2. Things are in good shape and we hope to have preliminary guidelines around the same time as the beta. Performance work is one of the most fun parts of building software, and while a huge topic, I thought I would post about a few interesting areas impacting our next release. Our goal is most SharePoint customers don’t have to worry much about performance. Just get the farm topology we recommend for your usage scenario and you will have plenty of headroom. But for large organizations, enterprise portals and internet sites with demanding performance requirements, it is pretty critical you understand this and plan your deployment carefully. Regardless of which group you fall into, I hope you find this interesting.

Current Product Guidelines - Here are links to our existing capacity planning guidelines which should provide good background for the discussion below and as well as a starting point for the next release:

SPS 2003 Guidelines
http://office.microsoft.com/en-us/assistance/HA011647571033.aspx
The numbers in appendix have been recently updated for the latest hardware and SQL Server 2005 showing an average RPS (requests per second) of 97, 198, 1114 for small, medium and large arms.

CMS 2002 Guidelines
http://www.microsoft.com/downloads/details.aspx?FamilyID=e1f50824-c281-4fd6-966c-ac4c68106010&DisplayLang=en
While less current numbers, there’s a lot of interesting details applicable to large scale sites notably caching features of CMS 2002 that will be integrated and enhanced in Office SharePoint Server 2007.

Usage Scenarios – No two customers are the same but we’ve come up with a few standard scenarios for assessing performance and scalability. Here are the key ones:

• Enterprise Collaboration Infrastructure -  Since one of the goals is to help organizations save money via delegated server consolidation of intranet, collaboration and file servers, the key question is how many sites can we support in a single server farm. The notable thing for the development team is unlike the next two scenarios caching really doesn’t help as you have lots of sites each with modest usage.

• Enterprise Portals – Here the biggest issue is typically how much throughput does a single site support at peak (e.g. 9 AM with portal as the browser default home page). Caching can help some here although often an enterprise portal will show different content for different users based on security and targeting (e.g. Marketing and Finance see different content). Probably the biggest factor in portals is the impact custom code such as web parts could have if not tuned.

• Internet Presence – Internet presences have similar issues to enterprise portals at much higher scale points. The advantage they have is often large parts of their content are static and unsecured so caching can be extremely valuable. CMS uses ASP.NET output caching to support thousands of request per second per farm and beyond.

Usage Models – We developed models of usage patterns in these scenarios based on what we see form a variety of customers and publish the formulas so you can tweak for your organization. For example, Enterprise Collaboration Infrastructure tends to be the most demanding traffic per user of the three scenarios above which results in roughly 1 request per second per 1000 users. Since most medium-large companies will deploy at least 2 front-ends for avoiding a single point of failure, that led us in SPS and WSS to have a minimum goal of supporting 100 (dynamic, authenticated and unique) requests per second for a 2 front-end farm because then we could support the portal and collaboration infrastructure (without custom code) of an organization with 100,000 users making our base performance a non-issue for most enterprises. While the increase in hardware performance makes this less of an issue (e.g. the 198 RPS for a medium farm), it was definitely a huge mantra for us during V2. This focus also helps small-medium businesses because it tunes how much we can do on a single machine or more commonly single front-end since we’d almost always recommend running SQL Server on a separate server except for demo and development scenarios.

Scale-Out vs. Scale-Up in WSS V3 and Office SharePoint Server 2007 – So there’s a key difference between supporting lots of little sites (e.g. collaboration infrastructure and internet communities) and a few huge sites (e.g. enterprise portals and internet presences). We provide the base facilities for the former in Windows SharePoint Services. In fact, WSS V2 was designed not just with enterprises in mind (e.g. Microsoft’s internal use with 300K sites) but with the design for hosted services including ISPs and Microsoft’s recently announced Office Live service. The big design features are support for stateless, load-balanced web front-ends with multiple databases, site collections and sites per farm. There’s relatively little change in this model for WSS V3 other than the light-up support which Office SharePoint Server supports via an enhanced Shared Service Provider model which re-uses databases and ASP.NET applicaiton pools to enable all the sites to have all the features. So base WSS and SPS are fast enough to handle most sites with 100% dynamic content but Office SharePoint Server adds advanced caching on top to support the most demanding sites.

Base Execution Throughput and Latency – Our goal is not to require changes in the farm topologies from V2 and continue to deliver sub one second latencies on page requests. There are definitely some additions to WSS V3 that can impact performance – the movement of the web part framework and execution of pages from the database from the WSS layer to the ASP.NET V2 layer, supporting native ASP.NET forms for extensibility, support for security trimming the UI (e.g. readers won’t see things like “Site Settings”), expanded browser and accessibility requirements as well as more work in the database to support features like content types, workflow and item level security. We are focused on these and there is a lot of tuning going into to Beta 2 so we will be in good shape so that few customers will require more hardware to support the new features. There are also new capabilities such as the InfoPath and Excel browser-based rendering that we are making sure get tuned and we have guidelines for adding these services to the farm as well.

Caching – I think most people would be amazed at how much time we spend talking about caching. Of course, it is much faster to fetch formatted HTML or data from memory or disk than to make multiple database or SOAP requests and do the formatting via a combination of ASP.NET and XML\XSLT. That said, caching poses many challenges. In highly distributed usage patterns like enterprise collaboration or internet communities, it is often not needed or does not help. Even when it could benefit a large site, it complicates security (the cache better not undermine the underlying security of the system!) and timeliness issues (how do update all the caches on the front-ends when data changes). Finally, caches and cache maintenance can take up memory and processor time that, if not careful, could actually make performance worse. So this is why we didn’t add caching to WSS (other than letting you specify cache web parts) and did focused caching in SPS 2003 (e.g. caching the navigation hierarchy with security trimming). However, because of the internet scale requirements (the most demanding latency requirements and many thousands of pages per second vs. hundreds), CMS 2002 had very elaborate caching support (writers spent a whole chapter on it in CMS books!) that we have evolved even further in the Office SharePoint Server 2007 code base. Leveraging the experience of some of the most senior developers from CMS, Office SharePoint Server will support caching pages, page elements, XSLT, XML, data from SharePoint lists, etc. Where it makes sense we will do the right thing without much work but you will be able to set caching policies appropriate for different types of sites and they strictly enforce security (which is feasible with a few buckets of content but obviously will not scale to caching content fragements for every user). The biggest thing carried forward from CMS 2002 to Office SharePoint Server 2007 is support for ASP.NET output caching where all or most of the executed HTML page is cached and IIS can send it via a kernel mode request to the client. We are doing work so you can still use this even if parts of the page aren’t cacheable (e.g. “Hello Jeff” in the top navigation), you still get the benefit of caching the other 95%. This will not only make sure largest internet presences are as fast as possible, but also enterprise or divisional portals upgrading from SPS 2003 can get a performance boost as well particularly for frequently used pages.

Custom Code – One of people’s favorite things about WSS V2 and SPS 2003 is the ability to write custom web parts and event handlers in .NET. We’re expanding this significantly in WSS V3 and Office SharePoint Server 2007 with native ASP.NET 2.0 web parts, support for optional in-line code and compiled ASP.NET pages, more workflow and event handlers, etc. As with the past release, we will publish guidelines on writing efficient code which we will strongly encourage everyone to read on creating and destroying SharePont objects, monitoring SOAP and database connections and round-trips, optimizing how much XML you use, etc. I also know some of the readers of this blog are some of the best experts on this with the current product and will point you to other blogs. We love the SharePoint developer community out there. As I mentioned in the Page Anatomy post, we are also going to give options to reduce the amount of code you need to write. For example, instead of writing 10 Web Parts each making hard-coded SQL or SOAP request to a database or web service, think about using the new Business Data Catalog to register those entity and methods in an abstracted way and using the new Business Data Web Parts which are built on top of a generic and flexible Data Form Web Part which can be customized using the Office SharePoint Designer 2007 XSLT editing capabilities. It won’t handle every scenario, but hopefully in many cases you can use it and leverage our coding and performance tuning so you don’t have to do this kind of work.

Scalability – There are many dimensions to scalability (sites, documents, users, etc.) and we are making big investments in increasing these for the next release and we’ll cover them all in the capacity planning guidelines. I’ll go into just example in this post – search. The 2nd generation search engine we use in SPS 2003 supports 4 catalogs of 5 million documents each for a total of 20 million items. We started on a more scalable 3rd generation engine we will be using in both WSS and Office SharePoint Server a few years ago with a version first shipped in SQL Server 2005 last year. One of the side benefits of improved scalability is we are simplifying search administration by eliminating the concept of multiple catalogs. We will support a single more scalable catalog (per Shared Service Provider) with many “search scopes” that give the other benefits of multiple catalogs with more flexibility and less complexity. We are also improving indexing efficiency which will help both the Search server and the WSS system. This is via 2 key investments: 1) using both the new WSS change log support (which is also used by Outook 2007 for offline documents) and 2) doing ACL only indexing (when a new member gets added to a parent WSS site it does not force a re-indexing of all the content in the V3 search engine, just an update of the index ACLs). While these don't speed up the first crawl, they will help a lot on subsequent crawls and help provide more cycles for more sophisticated relevance computations. We are also supporting what we call “continuous propagation” so pieces of the index are much more frequently sent to the search server so search results in large scale farms are very timely vs. having to wait for a crawl to complete before the full index is published. Finally, because of the "light-up" features, Office SharePoint Server can provide the native search features for all your sites so there is no need to double index the content which both takes up space and adds load to the WSS system and index time. There’s similar kinds of investments made in document and user profile scalability we’ll cover in the future.

64-Bit – I thought I would end with a little discussion on 64-bit as we often find the perception of the benefits are a little beyond reality (e.g. won’t it make everything twice as fast?). Often times you will see solid gains for 64-bit machine but there may be little difference in 64-bit mode on that machine vs. 32-bit mode. More often, the gain in the test is relative to an older 32-bit machine. The new AMD and Intel 64-bit chips will help a lot (and we also like dual core and are looking forward to quad core), but the benefit over 32-bit mode is because of the increased address space support for those parts of the applications that can benefit from more RAM (e.g. the SQL, Index and Search services in a SharePoint farm). It might also help with the caching I mentioned earlier although disk-based output caching in ASP.NET is already extremely fast. For other parts of the system, the performance can actually be 15-20% worse because in 64-bit mode you are passing around double the data. The net benefit is different for different applications and usage patterns so we’ll let you know how this all nets out for the various SharePoint scenarios. I think you will see some healthy scalability improvements when using the extra memory and address space for the SQL and Search process in sites under heavy load, but just don’t magically expect 64-bit mode on the same hardware to be twice as fast.

I know there is a lot of interest in more specifics and there are many areas I didn’t have space to touch on. The team is working hard to publish at first draft with beta 2 and we will forward to your feedback on that as we finalize it for RTM.

-- Jeff Teper

Published Monday, February 27, 2006 4:40 AM by sptblog

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Performance, Performance, Performance

thanks for the info and key points on performance.

It is a fact that performance is a big issue, and that we should all be aware of the implications and advantages of good planning and development.

Ricardo Magalhães

Portugal
techtalkpt.blogspot.com
Monday, February 27, 2006 5:45 AM by magalhaes

# re: Performance, Performance, Performance

Great post Jeff, with all these improvements around the scalability of site in SharePoint 2007, what are the implications of this on the SQL database sizes? My specific concern is around backup and restore of the SQL databases files as they could potentially get huge and I believe that there are recomended limitations to database size in SQL itself.
Monday, February 27, 2006 1:47 PM by Martin.Kearn@Microsoft.com

# re: Performance, Performance, Performance

We are a boutique hosting company (~2000 clients) and have spent a lot of effort working with STS and WSS.

We have "a few hundred" WSS sites and a few dedicated servers used by some larger clients.

The only real scalability problems we have had have been with using Active Directory integrated mode.  After looking at various scenarios (and how other hosters were doing it) we have done the following (which may or may not be the best approach).

We created a special domain xxxx.com with a neutral sounding domain name as the AD domain and created a single WSS_OU in it to hold all the users.

1. The end-users (employees of our clients, or general Internet users if the wss is a public site) continue to be confused by the login requirement of "domain\username".  

2. WSS namespace management is a blackbox that cannot be overridden.  Our users are tired of being assigned "Jim9" as their login name even when they seem to be the only "Jim" using the site or the server.  The "name collission" algorithm and the "cached forever" assignement of unique names is a real pain.

3. We thought about using a unique OU for each top-level site, but since OU's are not hierachical entities like domains, that wouldn't solve anything and seems to add unnecessary complexity.

4. Using a unique AD domain for each top-level site's membership namespace (not the website URL, but the AD users) adds tremendous cost and overhead since we would need to deploy at least two domain controllers per AD domain.

Will the new WSS address any of these pain points?

(We missed the first round of beta, hope to get in on the next one!)
Monday, February 27, 2006 2:20 PM by Robert Spivack

# re: Performance, Performance, Performance

Thanks for the great post!  Has there been any specific focus on the average page size?  It doesn’t help if the server farm is pumping out pages, but the client browser has to download “large” sets of data which each mouse click.  Many of our customers do not have unlimited bandwidth and throughput.  As a result, the additional load that SharePoint will add to the WAN/LAN is an important consideration.
Saturday, March 04, 2006 12:44 PM by Shaun Dicker

# re: Performance, Performance, Performance

Glad to see the rigor in your performance testing. I hope that the Outlook 12 team will be a thorough.

<Todd />
Saturday, March 04, 2006 4:49 PM by Todd Bleeker

# re: Performance, Performance, Performance

Just catching up on comments,

Robert - The approach to date sounds reasonable for today. We will be working on an updated send of guidelines for hosters for the next release when it comes out. One thing that might give you additional options is the pluggable authentication support but we'll cover all this.

Shaun - First thing I'd suggest is trying out IIS compression. It will help a lot even today. Second, we are working on tuning the page sizes and breaking things up a bit. Finally, for more published (vs. community) sites, we'll have "internet portal" template so readers don't get alot of the chrome, javascript app features, etc.

Todd - Yes the Outlook team is extremely focused on performance. As you know, cached mode was a big win for them with Office 2003 and we're working closely with them on the SharePoint and search integration features for the next release.

I know this is all a little vague but we continue to push the envelope of both features and scalability and we'll be extremely detailed by RTM. The good news is with SPS 2003 we have topologies that can do 1000+ pages per second TODAY and caching will help us do dramatically more on the interent for published sites in the future.

-- Jeff
Tuesday, March 07, 2006 12:06 AM by sptblog

# re: Performance, Performance, Performance

Great post. Very helpful as I am building SPS/WSS from the ground up as the company Intranet. This after running another corporate Intranet site on Sharepoint for about 2 years. GBG
Tuesday, March 07, 2006 5:12 PM by Geoff Gill

# re: Performance, Performance, Performance

Thanks Geoff -- Jeff
Tuesday, March 07, 2006 10:59 PM by sptblog

# Office 2007, SharePoint Server 2007 and Windows SharePoint Services V3

VIA JOPX on SharePoint, MCMS, Office and SOA

The Beauty of SharePoint 2007 - Publishing / Copying...
Wednesday, April 12, 2006 5:00 PM by Romeo Pruno

# re: Performance, Performance, Performance

Great post. Very helpful as I am building SPS/WSS from the ground up as the company Intranet. This after running another corporate Intranet site on Sharepoint for about 2 years. GBG

<a href="http://www.marmaraweb.com">web tasar&#305;m
</a>
Friday, April 21, 2006 12:39 PM by web tasarım

# re: Performance, Performance, Performance

Great post, Jeff.

We're currently in the early phases of a complete MCMS 2002 site redesign.  We've done a lot of work in the past to get performance up to our current levels.  At the moment, we have two web servers running MCMS in read-only, with a separate SQL Cluster.  Search is provided via a web service to a separate SharePoint installation.  All authoring is done on a separate internal MCMS site, and a deployment service we wrote in-house publishes it to the DMZ.

We use both ASP.NET output caching, as well as the MCMS caching.  While I don't know what our actual limits are, a recent nationally televised program resulted in a peak of around 100 requests per second, which we handled easily.  I'm glad to see that output caching for the publishing site template is included with the 2007 version.

What I'm wondering is whether I need to budget for additional hardware (a tough question, considering I don't even know what I'm going to have to build yet).   Is there some rule of thumb that says a current MCMS 2002 site using X number of servers will require X + n number of servers in 2007?

Regards,
Mike Sharp
Tuesday, April 25, 2006 6:00 PM by Mike Sharp

# re: Performance, Performance, Performance

Glad to see the rigor in your performance testing. I hope that the Outlook 12 team will be a thorough.

http://www.marmaraweb.com
Friday, May 05, 2006 4:20 AM by raso

# .NET Portal Server errr... Office SharePoint Server 2007

Over the past few days, I've been having a closer look at the next release of Microsoft Office SharePoint...
Sunday, May 07, 2006 6:31 AM by shlock (1) - Nigels Retrospective

# Office 2007, SharePoint Server 2007 e WSS

Thursday, May 11, 2006 9:31 AM by Raul Ribeiro

# Tech Talk PT &raquo; Blog Archive &raquo; Office 2007, SharePoint Server 2007 and Windows SharePoint Services V3 Link Galore V2

# Great Office 2007, SharePoint Server 2007 and Windows SharePoint Services V3 beta2

via JOPX
&amp;nbsp;
Ah finally, it is here ... get your Office 2007 beta2 ... So, to get things going -...
Saturday, June 03, 2006 5:07 AM by Marwan Tarek Blog

# 2007 Microsoft Office Server System Reference Material

Download SharePoint Beta2:

Important Documentation Prior to SharePoint Beta 2 Installation
Get...
Friday, June 09, 2006 11:12 AM by The Boiler Room - Mark Kruger, SharePoint MVP

# Dot-Com Meets SharePoint: Building an Internet-Facing Web Site Using Microsoft Office SharePoint Server 2007


Hi
&amp;nbsp;
My name is Jim Masson, and I'm a Lead Program Manager working on the Web Content Management...
Wednesday, June 14, 2006 4:47 PM by Enterprise Content Management (ECM) Team Blog

# re: Performance, Performance, Performance

Is the saving subsites as a template not there in the beta version of SPS 2007.
Monday, June 19, 2006 2:02 AM by Fahad

# re: Performance, Performance, Performance

Since beta 2 has been released, I am wondering if there are any formal performance guidelines which can be used during discussions with out clients?

Tuesday, June 27, 2006 3:09 PM by Jesse Murray

# re: Performance, Performance, Performance

Any DB partitioning guidelines for MOSS2007?
Tuesday, July 11, 2006 5:39 AM by stefan demetz

# Office 2007, SharePoint Server 2007 e WSS

SharePoint 2007 - General information SharePoint Server 2007 - Hidden gems Microsoft Office SharePoint
Tuesday, September 26, 2006 6:33 AM by Raul Ribeiro

# SharePoint Tech Network Performance Deployment Planning and Considerations

In a recent conversation with a SharePoint customer we had some back and forth on how they could optimize

Tuesday, October 31, 2006 6:09 PM by Joel Oleson's SharePoint Land

# stefan @ decatec - Sharepoint performance benchmarking standards

# stefan @ decatec - Sharepoint performance benchmarking standards

# Sharepoint performance benchmarking standards

Since Sharepoint is getting huge wouldn't it be time to establish a Sharepoint Benchmarking Standard...

Monday, January 22, 2007 6:42 PM by SharePoint in Italy

# Performance of Internet Facing Web Sites based on MOSS 2007

Hi all, Internet Facing Web Sites based-on MOSS 2007 and his ECM capabilities is one of more exciting...

Wednesday, February 07, 2007 11:19 AM by Sharepoint Experiences :: Brazilian SPS MVP

# Performance of Internet Facing Web Sites based on MOSS 2007

Hi all, Internet Facing Web Sites based-on MOSS 2007 and his ECM capabilities is one of more exciting...

Wednesday, February 07, 2007 11:24 AM by Sharepoint Experiences :: Brazilian SPS MVP

# ilaclama

Since Sharepoint is getting huge wouldn't it be time to establish a Sharepoint Benchmarking Standard...

Thursday, June 07, 2007 6:51 AM by serhan

# 2007 MOSS Resource Links (Microsoft Office SharePoint Server)

2007 MOSS Resource Links (Microsoft Office SharePoint Server) Here is an assortment of various 2007 Microsoft

Tuesday, June 26, 2007 11:14 AM by The Boiler Room - Mark Kruger, Microsoft SharePoint MVP

# re: Performance, Performance, Performance

Hi all

Great post, Internet Facing Web Sites based-on MOSS 2007 and his ECM capabilities is one of more exciting...

Thank you!

Saturday, September 29, 2007 8:49 PM by lazer epilasyon

# re: Performance, Performance, Performance

Great post. Very helpful as I am building SPS/WSS from the ground up as the company Intranet. This after running another corporate Intranet site on Sharepoint for about 2 years. GBG

Saturday, September 29, 2007 8:50 PM by Lazer epilasyon

# re: Performance, Performance, Performance

Great Post indeed!

This will definitely help setting up the MOSS Farm.

We just setup a x64 bits MOSS and unfortunately we are having some performance issue. I am wondering if you can suggest anything. Below are the configurations we have:

- Single Box MOSS Farm (x64 bits) with a remote SQl 2005 (x32 bits due to various reasons).

- All the servers have 1.00 GB NIC and the Switch they are connected to support 1.00 GB bandwidth.

- Workstations are on a VLAN that supports up to 100.00 MB Bandwidth and also connected to the same switch (segmented by VLAN)

Our ISSUE

==========

When we browse the page from our client machine (XP machines) the pages, default.aspx or any .aspx pages loads very slowly, almost now useable. Any .html page loads up instantly. So we started troubleshooting, and below is what we did:

- 1) we tried loaded simple .html page - loads instantly

- 2) We looked for errors and we could not see any error.

- 3) We browsed the SharePoint MOSS site from a server, by making RDP connection to our other server that connected to the same switch as the MOSS server but in another VLAN - the page loads instantly.

- 4) We also tried making a CITRIX connection and the page loads quickly. In this scenario the page comes up from a Citrix server that has 1.00 GB NIC and bandwidth.

- 5) So we decided to take a laptop to the server room and connected to the same VLAN as the MOSS server. Remember in server room the bandwidth is 1.00 GB. And our laptop is capable of 1.00 GB speed, so it auto set to 1.00 GB speed. And this time the MOSS site page comes instantly.

- 6) Then for trouble shooting purpose we set the NIC to 100.00 MB speed duplex as it is from the workstations VLAN segments, and now we are having the same latency problem that is unbearable, almost makes you not to use the site.

- 7) we also have a x32 bits MOSS farm where we don’t see this problem with same clients.

Questions/Curiosity

====================

- we know there is a difference in bandwidth/speed of 1.00 GB in server  VS 100.00 MB in workstation, but we are not seeing latency from our clients to MOSS x32 bits farm, but why is the so huge latency to the x64 bits farm?

Any advice is appreciated..

Thanks,

Jax..

Saturday, October 20, 2007 12:42 AM by Jax

# re: Performance, Performance, Performance

Thanks for a very informative article.

Many SharePoint gurus now are asking developers to cache objects, sessions and especially page output in order to give their  sharepoint performance the boost it requires.

We have written an article around the subject and hopefully it'll help inform various Sharepoint users about the types of caching available that can make their applications perform faster as well as making them more reliable and scalable.

Team NCache

Tuesday, August 19, 2008 8:05 AM by Paul Jones

# Microsoft SharePoint Team Blog Performance Performance Performance | Paid Surveys

# Microsoft SharePoint Team Blog Performance Performance Performance | debt consolidator

# Microsoft SharePoint Team Blog Performance Performance Performance | debt solutions

# Microsoft SharePoint Team Blog Performance Performance Performance | internet marketing tools

# Microsoft SharePoint Team Blog Performance Performance Performance | unemployment office

# re: Performance, Performance, Performance

Thank you admin good article

Friday, January 01, 2010 9:19 AM by celilcan

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker