Processor and Memory Recommendations for Exchange 2010

Being on 32 bit platform Exchange 2003 always had limitations of memory sizes though not for the processors. Yet, the standard processor ratio for DS:Exchange can significantly affect your Exchange Server performance as well as the end user experience. You can recall that Microsoft recommended 1:4 processor ratio for an Exchange Server 2003 deployment. Now here in this ratio Microsoft recommended using at least 1 core of CPU for your domain controller/global catalog if you have an exchange server which runs on a CPU having 4 cores in it.

These recommendations have few more additions since Exchange 2007 and a bit for Exchange 2010 too. Due to the x64 architecture of both products and the platform’s capacity to address more memory along with Exchange’s its own bifurcated server roles it is necessary to review it. Well, the recommendations per server role for Exchange 2010 are below:

Server role Minimum Maximum Recommended
Edge Transport 1 x processor core 12 x processor cores 4 x processor cores
Hub Transport 1 x processor core 12 x processor cores 4 x processor cores
Client Access 2 x processor core 12 x processor cores 8 x processor cores
Unified Messaging 2 x processor core 12 x processor cores 4 x processor cores
Mailbox 2 x processor core 12 x processor cores 8 x processor cores
Multiple server roles (combinations of Hub Transport, Client Access, and Mailbox server roles) 2 x processor core 16 x processor cores 8 x processor cores

Table 1

Apart from above recommendations you still need to maintain the ratio of processor cores per server role to each other below is another table which talks about it.

Server role ratio Recommended processor core ratio Memory Per core
Mailbox:Hub 7:1 (no antivirus scanning on Hub)

5:1 (with antivirus scanning on Hub)

1 GB for each core on HT
Mailbox:Client Access 4:3 2 GB for each core on CAS
Not applicable for Edge Refer Table 1 1 GB for each core

Table 2

Again, the old days still have their importance in life. Domain controllers providing services to an exchange organization should still maintain the 4:1 ratio if you have a domain controller running a 32 bit operating system. This scenario changes a little bit for a domain controller running a 64 bit operating system. The ratio for an domain controller with 64 bit OS is 1:8. Here the exchange server’s CPU cores are for every server role. That means if you have a 3 different servers named MBX – mailbox server role, CAS – your CAS server role, HT – your HT server role, and UM – your Unified messaging server role having 4 cores in each which should be 16 cores in total then you should have at least one domain controller running 2 cores of CPU. For more information on choosing a right CPU for your 64 bit infrastructure you can refer the supported processor manufactures websites. Intel or AMD

Addition to this, each mailbox server should have 4GB of memory plus 2-10MB per mailbox, based on if the mailbox is in light, average, or heavy use. To calculate the memory requirement and storage requirement for the mailbox server role you can always refer the mailbox storage calculator:


Get-OWAVirtualDirectory returns “An IIS directory entry couldn’t be created. The error message is Access is denied.”

Today, I had a problem with my lab installation of Exchange 2010. The setup is pretty simple of a mixed mode organization having an Exchange 2003 SP2, Exchange Server 2007 SP2 32Bit, and an Exchange 2007 RC1 setup in it.

After installation I noticed that, when I open EMC on Exchange 2010 server and click on Client Access server role under server management node I get a weird error as below:


The EMS on Exchange 2010 server showed up the red lines of death too.

PS] C:>Get-OwaVirtualDirectory |FL
An IIS directory entry couldn’t be created. The error message is Access is deni
. HResult = -2147024891
+ CategoryInfo          : NotInstalled: (GLEX2007owa (Default Web Site):A
DObjectId) [Get-OwaVirtualDirectory], IISGeneralCOMException
+ FullyQualifiedErrorId : 46C81F27,Microsoft.Exchange.Management.SystemCon


Turns out, if I have Exchange 2007 server in co-existence with Exchange 2010 the security group “Exchange Trusted Subsystem” needs to be a member of Local Administrators group on an Exchange Server 2007 box.


And, that should be it. The error went away as soon as the security group Exchange Trusted Subsystem was added to local admins group on Exchange server 2007.

Thanks to Henrik for helping me out on this. 🙂

How to Manually Rebuild the Full-Text Index Catalog

Content Indexing also known as CI is a great feature to speed up item searching through mailboxes. I had to rebuild a CI database for a mailbox yesterday because there were some errors showing up on application log (I dont really remember the errors now) which were indicating that the CI was unable to update few items from database. Turned out the problem was not with database but with a faulty CI catalog associated with that database. After a good 2 hours of troubleshooting we figured out that the problem was with the faulty CI database associated with that database. Here is the process to manually delete the CI catalog and rebuild it and of course this is how we did it. Its not very difficult though  you need to take care that you are deleting the correct CI database.

First of all locate the database locations on the physical drive.


Your indexing catalogs are located within this folder.


Now if you multiple databases homed within the single folder you may find more than one Catalogs created.


In such case I use the built in script GetSearchIndexForDatabase.ps1 to find out which catalog belongs to which database. The script uses the path of index catalogs to help you determining the name of its associated database. See figure below.


Once you are done with determination of associated database you can simply stop the Microsoft Exchange Search service and then remove the appropriate catalog based on the output of the script and then start the Microsoft Exchange Search service again.

After deleting the catalog files the service may take some time to enter the started status.

Well, I updated this post because someone pointed out an irrelevant infomration here. I would like to thank Jack who spent his time and corrected me on this. Thanks much, Jack 🙂