Small Business Server 2011 can be a strange beast at times. Apparently thrown together from a bunch of different products, it really does look and sometimes act like it’s being held together with spit and bailing wire. Case in point: Remote Web Access.
It’s a great idea, the ability to allow you to remotely access the shares on your server without having to access it directly via Remote Desktop or any other sort of remote control software. Just access the correct subdomain that is assigned to your server, and voilà, you have access to your shared server files.
But what if you try to connect, and you are unable to click through to those files? What if you are thrown an error message that claims “an unexpected error occurred”? Well, blame Exchange. Literally. You see, SBS 2011 needs at least 5% free memory in order for you to access your shares via the web interface. And there are two programs on SBS that will opportunistically suck up every last MB available: Exchange and MSSQL. Today we look at the former, as its solution is a lot more complicated to “correct”.
Now, if you look at the image below, you will see what I mean:
Store.exe is sucking up all available memory. Why? Well, this is a default, expected behaviour! This is to ensure responsiveness and accessibility to the Exchange data. Problem is, when you factor in Remote Access, it kind of torpedoes that feature.
So why change how Exchange uses memory? You shouldn’t. Really. Unless you have a truly compelling reason to cap Exchange’s memory usage, you should stop here. Microsoft has made its memory usage unbound for some really good technical reasons, and it should be capped only if there is no other solution out there, such as for Remote Access.
To proceed, open up a command prompt, and type in adsiedit.msc
. You should get the window below, and you may need to right-click on the first entry to connect to the “Configuration” Naming Context. If you have done this before, it should be already connected.
From there, click on each “folder” in turn (to get the expand [+] icon) and expand the folders:
Services > Microsoft Exchange > 'Organization Name' > Administrative Groups > 'Administrative Group Name' > Servers > < 'Server Name' > InformationStore
The sections in single quotes are going to be named different according to your setup.
Once you find the Information Store
entry, right-click on it and select Properties to get the attributes you need to set:
Find the setting msExchESEParamCacheSizeMax
and fill it in with the correct values. If you are using Exchange 2010 SP1 or later, you will also have to fill in msExchESEparamCacheSizeMin
as well, otherwise you can run into big issues: because the default min size is already rather large, it will never use your max setting unless you set an appropriate (lower) min setting! Plus, it’s just good practise to set both a max and min even if you’re using an earlier version of Exchange. For the correct values, please refer to this table:
Target Cache Size in GB |
msExchESEParamCacheSize for 2010+ (32KB pages) |
msExchESEParamCacheSize for 2007 (8KB pages) |
---|---|---|
1 | 32768 | 131072 |
2 | 65536 | 262144 |
3 | 98304 | 393216 |
4 | 131072 | 524288 |
6 | 196608 | 786432 |
8 | 262144 | 1048576 |
10 | 327680 | 1310720 |
12 | 393216 | 1572864 |
14 | 458752 | 1835008 |
16 | 524288 | 2097152 |
18 | 589824 | 2359296 |
20 | 655360 | 2621440 |
Finally, just restart the Microsoft Exchange Information Store service, and you should be good to go:
Good luck!