I’ve been blogging this entire month on Exchange 2010, everything from the basics of what’s new in Exchange 2010 to Migrating from Exchange 2003 to Exchange 2010 to Migrating from Exchange 2007 to Exchange 2010 to Integrating Exchange 2010 with OCS 2007 R2. One of the questions I get asked frequently is “what’s the right size servers for Exchange 2010?” That’s always a fun topic because the answer no doubt is “it depends,” however it’s not like there isn’t a direct answer, it’s just the answer varies based on the size of your environment and the usage of Exchange in your environment. So while there is a “rule of thumb” for most organizations, to come up with the best estimate, there are methods and tools to properly size your servers.
To just throw out very basic configuration recommendations:
Small Business (<50 users): Single all in one server where the Client Access Server (CAS), Hub Transport Server (HT), and Mailbox Server (MBX) roles are all on the same server. The base configuration would be a DualCore Server (QuadCore for more horsepower), 8GB of RAM, and 300gb-1tb of disk. With Exchange 2010, you can do failover clustering of the database (Database Availability Groups (DAGs)) even when the server is setup with all of the server roles on the same system. So for an organization that wants higher availability and disaster recovery of Exchange 2010, get 2 of these “all in one” configured servers and have them failover to one/another (Note: since you can't have NLB running for failover of the CAS role 'and' Clustering running for the failover of the DAG on the same server (not a supported configuration), you need to use an external load balancer in this scenario (Note updated 3/4/2010))
Large Small Business (<150 users): Can do the same as the Small Business, but you’d definitely want to get 2 of the server configurations for higher availability and failover. With 150 user connections, you’d want to get QuadCore for each server and 16GB of RAM in each server with 500gb-1.5tb of disk as likely you’ll have more storage demands.
Medium Size Business – Single Site(150-2000 users): In these larger environments, you’d want the ability to have better failover and fault tolerance between server services. In these environments, you’d split the CAS/HT roles from the MBX roles and no longer have an “all in one” server. But you can combine the CAS and HT roles to one server, and put the MBX on another server so effectively you have 2 servers (the “frontend” type of configuration for client access and message routing (CAS/HT) and the “backend” type of configuration for the user mail). In this configuration, the CAS/HT would have 8gb of RAM, QuadCore, and mirrored 300gb hard drive. The Mailbox server would have 8-16GB of RAM, QuadCore, and likely 1TB-2TB of disk space dependent on the storage demands of the organization. And for high availability reasons, you’d likely have two of these sets of servers so that the CAS/HT servers (times two) failover to each other, and the Mailbox servers (times two) failover to each other.
Larger Environments / Multi-Site Environments: When you get to larger environments (more than 2000 users) or multi-site environments where you have users split across a WAN, the number of servers will vary as well as you’ll find you’ll split the CAS role and the HT role into separate servers, and the Mailbox Servers most certainly would have redundancy on the mailboxes (DAG is a great solution for database redundancy).
While the above are basic recommendations, to really determine the right “size” of your server(s) as well as the recommended disk needed, there are a series of tools and methods to size your environment needs.
For those familiar with previous version of Exchange (ie: Exchange 2007, Exchange 2003, Exchange 2000, etc), you’ll find Exchange 2010 actually runs better optimized than previous version of Exchange. Microsoft made a number of (significant) improvements in the design of Exchange 2010 that makes the system run more efficiently and effectively. Notably, being exclusively a 64-bit version of Exchange, you now have the ability of putting more than 4gb of RAM in a server and as such, you don’t need to spool to disk as you did with the 32-bit Exchange 2003. 64-bit Exchange 2010 now requires 50-75% less disk than Exchange 2003 because no extra disk space is needed to support the limitations of RAM that was available in the 32-bit Exchange 2003 and prior.
However, while 4gb, 8gb, or more is very common in Exchange 2010 environments, too much RAM can actually cause Exchange 2010 to run slower than if you had less RAM. As an example, in a CAS or HT server, we have found that 8gb is the maximum you want in those servers. When you put 12gb or 16gb of RAM in a CAS or HT server, the server actually performs slower than with 8gb. That is because putting 16gb of RAM in these servers has more processor time managing the excess RAM than the excess RAM provides for performance value improvements. So keep your CAS/HT servers to 8gb or less.
Similarly, for the number of processors, it has been found that 12 core is about the maximum number of core in Exchange 2010 that provides value. When you hit 16 core, the processors are not providing incremental benefit to the reading and writing of emails to the Exchange server databases. Liken it to putting 8 core in your workstation running Outlook and Word doesn’t make you read and write emails and Word documents any faster than if you had a 4 core process in your workstation.
There are 3 tools that are VERY beneficial in helping you really understand what you need for server and disk capacity in Exchange 2010.
The first tool is the Exchange Server Profile Analyzer (64-bit) http://www.microsoft.com/downloads/details.aspx?familyid=C009C049-9F4C-4519-A389-69C281B2ABDA&displaylang=en. This tool runs against your existing Exchange environment (Exchange 2003, Exchange 2007, etc) and collects information such as server performance, mailbox storage, user access, mail message routing, etc. Regardless of whether you have a single mailbox store or multiple servers across your enterprise, the Exchange Server Profile Analyzer analyzes your existing environment. Effectively, this tool gathers information that’ll help you better understand the usage in your current environment (this information will be helpful when you use the upcoming 2 tools and get asked how many mailboxes you have, how many email messages people send and receive in a day, how many mail messages are routed from site to site or in/out of the Internet, etc). So this is a statics gathering tool. This tool is run against your existing production environment. Typical safeguards apply, that you make sure you have a good backup of your existing environment before proceeding, test the tool in a lab environment if you want to test the experience of what the tools does, etc…
The next tool is the Load Generator Tool, or LoadGen. There is a LoadGen tool for Exchange 2003/2007, and a new LoadGen for Exhange 2010. As of the time of this blog post (Nov/2009), the LoadGen tool for Exchange 2010 was still in Beta http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=cf464be7-7e52-48cd-b852-ccfc915b29ef. It’s important to note that the LoadGen tool for Exchange 2003/2007 will provide inaccurate results if you really want to know the Load of an Exchange 2010 environment, thus if you want to do Load Generation analysis for Exchange 2010, you really need to use the LoadGen for Exchange 2010!
Note: the reason that Exchange 2003/2007 is different than Exchange 2010 is that Exchange 2010 no longer has workstations talking MAPI direct from the client to the Mailbox server. Instead, in Exchange 2010, MAPI communications actualy hit a Client Access Server and then that MAPi communications goes from the CAS server to the Mailbox server. Therefore, ALL client communications traffic (MAPI, OWA, IMAP, POP, ActiveSync) hits a CAS server, and thus the load on a CAS server is heavier than in previous versions of Exchange.
With LoadGen, it actually tests the sending and receiving of email messages (MAPI, OWA, ActiveSync, IMAP, POP, SMTP) to Exchange 2010 servers and simulates the load of users, message transmissions, etc. You are prompted how many users you have, how often they send and open messages, how many messages go between servers, etc (thus, it’s good to run the Exchange Server Profile Analyzer so you know these types of metrics). Because LoadGen is sending test traffic to/from your Exchange 2010 servers, it is HIGHLY important you run this tool in a test environment or off hours where you will not impact production use of Exchange 2010. The load generation will max out your Exchange 2010 server to determine the maximum capacity of the system, therefore plan accordingly.
And the other tool to use when testing out the capacity of a server is the JetStress tool. JetStress runs performance tests against Exchange to test the database and log file loads produced by a specific number of users against Exchange. Similar to the LoadGen tool, there is a JetStress tool specifically for Exchange 2010 that is completely different than the tool for Exchange 2003 or 2007. Databases in Exchange 2010 are written sequentially to disk, whereas in previous versions of Exchange, database writes (and read) were random writes storing Exchange data randomly anywhere on the Exchange disk platter. As such, Exchange 2010 is significant more efficient in reading data off disk because the information is read sequentially, however because Exchange 2010 requires the write to be sequential, the database needs to be optimized to provide for sequential writes.
At the time of this writing (Nov/2009), the JetStress tool for Exchange 2010 was in beta. It could be downloaded from http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=13267027-8120-48ed-931b-29eb0aa52aa6
As with the LoadGen tool, run the JetStress 2010 tool off hours and against a test or isolated Exchange 2010 server environment. Doing so during production hours on production Exchange 2010 servers will greatly (negatively) impact the user experience to Exchange while the tests are performed. JetStress will generate Exchange disk Input / Outlook (I/O) loads and through the use of Performance Monitor and Event Viewer, an administrator can validate the impact of specific disk focused stress against the Exchange 2010 environment.
With these tools, an administrator can understand the current production usage of Exchange (Exchange Server Profile Analyzer), test load against an Exchange 2010 server (using LoadGen), and stress the disk subsystem of an Exchange server (using JetStress) providng the administrator a snapshot into the proper sizing, capacity planning, and performance requirements in an Exchange 2010 environment.