How to Improve SharePoint Performance and Scalability
Microsoft Office SharePoint Server (MOSS) is an extremely popular product that improves effectiveness of organizations through content management and enterprise search, shared business processes, and information-sharing across boundaries for better business insight.
Problem: SharePoint Performance & Scalability Bottleneck
SharePoint is a database driven product and makes frequent database trips for almost all of its work. Most of what is shown to the user is either a list or a document (also called a BLOB) and both come from the database.
As a result, SharePoint performance is often not very good (slow response times). Slow response times can frustrate users and in case of customer facing applications, you can even lose customers and as a result direct revenue.
The SharePoint performance problems occur primarily due to the following reasons:
- BLOBs overwhelm SQL Server: SQL Server is a relational database that was designed to store structured relational data and not large binary data. Therefore, when SharePoint stores its documents (BLOBs) in SQL Server, it overwhelms the database and this slows down SharePoint performance considerably. More than 90% of the data stored in SQL Server for SharePoint is BLOB data.
- Too many database trips for lists: Lists are the central characteristic of SharePoint and everything is displayed as lists to the user. And, all these lists are stored in SQL Server and SharePoint makes too many trips to the database which also overwhelms it and this slows down SharePoint performance.
Figure 1: SharePoint deployment with performance bottlenecks
As you can see in Figure 1, the Web Front End (WFE) servers are frequently going to the SQL Server cluster for meta data, list content, and BLOBs. On top of this, Index Server and Query Servers are also going to the same database. The entire database is overloaded and slows down quite a bit. That is the reason why in typical deployments SharePoint performance cannot scale beyond 6-7 WFE servers in a load-balanced web farm.
Solution: Externalize BLOBs and Use Caching
What you need is better SharePoint performance with faster response times even as you increase the number of users or number of WFE servers in the web farm. Better SharePoint performance results in satisfied users and an increase in revenue or website loyalty if your application is customer facing.
You can dramatically improve SharePoint performance if you use a few of intelligent techniques. They are:
- Externalize Documents (BLOBs): By moving all your BLOBs out of SQL Server and into a file system or SAN/NAS storage, you will relieve a lot of pressure from the database. This will allow SQL Server to focus more on what it does best, namely to process relational data transactions. And, a faster SQL Server means better SharePoint performance with more scalability.
- Cache Lists and BLOBs: By using caching on lists, you would reduce the database traffic even further since most structured data in SharePoint is displayed as lists. Caching list should reduce lists traffic by 50-70% since most database operations for lists are read-operations. Additionally, by caching BLOBs in an extremely fast in-memory cache, you’re even reducing trips to the file server of SAN/NAS storage and improving your BLOB read performance greatly which improves SharePoint performance.
Figure 2: Better SharePoint Performance with externalized BLOBs & Caching
Figure 2 shows how by using a combination of external BLOB storage (EBS) and in-memory caching, you can dramatically improve not only SharePoint performance but keep this good performance even when you increase user/transaction load on your SharePoint deployment.
The database trips are now made only to read lists once and then they’re cached for a configurable period of time so you don’t have to make these expensive database trips for lists again. Additionally, BLOBs are moved out of SQL Server and therefore all BLOB operations no longer go to the database. And, on top of all this, in-memory caching is used on both BLOBs and Lists which improves access time from WFE server to the cache and results in better SharePoint performance.
How Does StorageEdge Help?
StorageEdge combines all the things discussed above and automatically improves SharePoint performance and scalability for you. Here is how it works:
- Install StorageEdge: You install StorageEdge on all the WFE servers. StorageEdge installs itself as web modules to SharePoint application and also configures an External BLOB Storage (EBS) adaptor. StorageEdge also includes an extremely fast in-memory cache (NCache) bundled inside it on the WFE servers.
- Configure BLOB Externalization: Through a web interface, you configure StorageEdge to externalize all your BLOBs. You can specify an external storage location which can be file system, SAN, or NAS storage. Cloud Storage is coming soon.
- Configure BLOB Caching: You also configure StorageEdge to cache BLOBs and you can specify for how long after which they’re expired (removed) from the cache.
- Configure List Caching: You also configure StorageEdge to cache lists that you feel are frequently used and also for how long after which they are expired (removed) from the cache.
- Monitor SharePoint Performance improvements: You can start using StorageEdge immediately and monitor its progress through a rich set of PerfMon counters. And, of course, you can monitor a noticeable improvement in your SharePoint performance with faster response times through your regular ASP.NET PerfMon counters. And, you’ll see the same good response times even when you increase user/transaction load on SharePoint.
What to Do Next?