Exchange store.exe hogging all available memory, or why you cannot access shares on Remote Web Access for SBS 2011

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:

Task Manager view

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.

Launching adsiedit.msc

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:

Finding the ‘msExchESEParamCacheSizeMax’ entry

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
for 2010+ (32KB pages)
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:

Adding the Min and Max values

Good luck!

Leave a Reply

Your email address will not be published. Required fields are marked *