I get asked for SharePoint server recommendations nearly every day. Like nearly all ‘best practices’, there is no single answer for perfect server recommendations. The answer always seems to be, “It depends.” What is your budget? How many users? What type of users? What type of activity are the users doing? What type(s) of SharePoint sites are you running? Web Content Management sites? Team Sites? BI tools? If you look online for SharePoint 2010 farm configurations, you will see incredible descriptions of server clusters, farms, SAN configurations, hundreds of GBs of memory, incredible RAID configurations, clusters of servers for every imaginable service and other configuration scenarios that most nonprofits could never afford. If you want some great fun with environment configuration recommendations, download the HP Sizer for Microsoft SharePoint 2010. I recently ran a scenario through the HP Sizer and got a recommendation for a 32 server environment with full details.
Most of the nonprofits I work with don’t have the resources available for 32 new servers to run SharePoint. Is there anything you can do on a shoestring budget to maximize performance with your SharePoint environment? Absolutely! You can run SharePoint on a single server. It doesn’t matter which version of SharePoint, either. You can run SharePoint 2010 Standard, SharePoint 2010 Enterprise, SharePoint Foundation, Windows SharePoint Services, and MOSS 2007 all on a single server. Will it be the absolute best performing SharePoint environment ever? Probably not. But you can run an effective and efficient solution on a single server.
If you are running SharePoint on a single server, there are some things that you should take into account.
- Dedicate your server to running SharePoint. I’ve seen a variety of configurations where a single server was used to run custom apps, ColdFusion, PHP, Media Streaming Services, Exchange, and a host of other things. Sure you can do this, but should you?
- Stop unused services. Do you really need the audio services running on Server? Stop and disable any of the services that you are not using.
- Add RAM. RAM is cheap. Whether virtual or physical – allocate memory to your server. I run 6GB dedicated to the VM on my laptop – and I’m the only user.
- Plan you drives and partitions. There are heated debates over partitions, RAID systems and drive configurations on the web. Like RAM – more is better. If you are purchasing a single machine to run SharePoint – hardware is cheaper than software at this level. Purchasing a flexible server with multiple SAS drive controllers and fast drives gives you flexibility to run different RAID configurations (RAID 10 is faster than RAID 5). Running 3 partitions on the same physical drive is slower than running 3 separate drives. Want to know something interested – partitioning segments of a drive and leaving the drive largely empty often gives the best performance. If you have a 1TB drive and put a 250GB partition on it and ONLY use the 250GB – you will get better performance than if you use the whole drive. Sure you are ‘wasting’ 750GB worth of space, but this recommendation is about getting optimal performance from a single server – not conserving drive space.
- Plan SQL. If you are using SQL Server Express (which is the default version used during a stand-alone install), then there is very little configuration control you have using the install wizard. If you are using a Standard version of SQL Server 2008, then you have a ton of control over configuration options. You can split data, logs, temp db, OS, and page files all to different drive arrays. If you dedicate controllers/drive arrays to each of these operations then you will gain significant performance gains from SQL.
As you can see, there are tons of things you can do to optimize performance for a single server environment. All of these steps should be considered with multi-server environments as well.
To paraphrase (and completely rewrite an old saying), your environment is only as fast as the most restrictive bottleneck.