For several months I had a couple of SBS servers that would occasionally fail to respond. Often times I was able to RDP to the server. The event logs would not show a problem but workstations were unable to access anything on the server. A look at the workstations also found nothing wrong. In my experience there are two things that can cause mysterious problems like this: cabling and memory. We look at the cabling and the switch. They weren’t the problem. The problem was server memory sharing or lack thereof.
We’ve gotten used to Exchange hogging all the memory on the server, but in pre-2007 versions it was pretty good at sharing that memory with other applications. But no more. Exchange grabs that available memory and doesn’t let go. When the server comes under load it then becomes unresponsive to additional requests. Wait for a long time and the problem will go away. Reboot and the problem will go away. Restart the Exchange Store and the problem will go away. But what we really need to do is prevent it from happening in the first place.
The solution to this problem is to tune Exchange caching to your environment. TechNet has an article on how to calculate how much cache and therefore memory that Exchange will need. You can find that article here: http://technet.microsoft.com/en-us/library/ee832793.aspx. This is a great article in that it gives you the formula for determining the minimum and maximum memory allocation your environment will require and also point us to another TechNet article that shows us where to make this change. (Interestingly enough this later article is from Exchange 2000 days.) That second article is here: How to modify the Store Database maximum cache size in Exchange 2000 Server
If you do nothing then this is now much ram the Store service is taking on your server right now:
The amount of ram that you want to set aside for Exchange will vary based on the number of emails sent by the organization so you will want to perform the calculation outlined in the article above.
I’m a small business consultant with many clients running exchange on-premise. For my purposes I needed to find a standard that fit the majority of my clients. We can of course tweak said standard when the situation warrants, say the client is very small or very large. So I calculated a number that I felt would never be exceeded. My number is 10GB maximum and 5GB minimum. You should note that although it doesn’t say so in the article, the one written for the 2000 era, setting a minimum and a maximum was required in order to have the desired effect on freeing up the ram. You should also know that the value you enter into msExchESEParamCacheSizeMax and Min must be an increment of 32k. Thus 10GB is 327680 an 5GB is 163840. (Many thanks for Michael B Smith for assisting with the calculation and pointing out the importance of 32k)
Where is this parameter? It’s in Active Directory. You’ll need to enable Advanced Features viewing. Browse to the Information Store object and modify the attributes. Yes you will need to restart the Exchange services for this change to take effect.
Many thanks also to our fabulous staff at Third Tier for getting to the bottom of this issue.