How to limit Exchange 2010 memory usage

Came across sites recently where the information store process on an SBS 2011 box tends to take most of the available memory. In normal circumstances Exchange 2010 is designed to use as much memory as possible for performance optimization. As long as Exchnage 2010 is running on it’s own, there’s no problem with that. The issues can arise in SBS 2011 environment, where there is SQL 2008 R2 installed alongside Exchnage 2010 and SQL has similar optimization built in. As a result the performance of the system could degrade by time and requires restart  of Exchange/SQL services or rebooting the whole system.

To avoid this problem, you can limit the amount of memory Exchange is using. Start by opening ADSIedit – either click Start -> ADSIedit.msc, or navigate to Start -> All Programs -> Administrative Tools -> ADSI Edit.

Right click the root of the tree view on the left and select Connect To. . .  On the Connection Settings screen select the Select a well knowb Naming Context option and from the drop down list choose the Configuration option.

ADSI Edit -> Connect To

Once connected to the Configuration Naming Context, navigate to the following item:

Configuration -> Services -> Microsoft Exchange -> ”Organization Name” -> Administrative Groups > ”Administrative Group” -> Servers -> ”Server Name” -> InformationStore

Right click Information Store and scroll down to msExchESEParamCacheSizeMax attribute and set the value according to your requirements.

ADSI Edit -> Information Store Settings

Please note that Exchange 2007 works with 8kB pages and Exchnage 2010 works with 32kB pages. So if you want to limit the size of memory used to 4GB, you will need the following calculations:

Exchange 2007: 4 GB = 4.194.304 KB / 8 KB => 524288

Exchange 2010: 4 GB = 4.194.304 KB / 32 KB => 131072

If you have confirmed you have the correct numbers, you can click OK to save the settings and restart Microsoft Exchange Information Store service for the changes to take effect.

UPDATE: As it turns out, setting the msExchESEParamCacheSizeMax size only doesn’t seem to be sufficient. The limit has been actually applied only when the msExchESEParamCacheSizeMin size was set as well. In our example the values would be set as follows:

Exchange 2010:

Min – 1GB: msExchESEParamCacheSizeMin = 32768

Max – 4GB: msExchESEParamCacheSizeMax = 131072

Exchange 2007:

Min – 1GB: msExchESEParamCacheSizeMin = 131072

Max – 4GB: msExchESEParamCacheSizeMax = 524288

 

See also:

How to limit SQL Server 2005/2008 memory usage

Tagged , , . Bookmark the permalink.

17 Responses to How to limit Exchange 2010 memory usage

  1. jt says:

    is there a minimum setting limit – set it to a GB was fine for 2 days just quietly increasing thgen in a 2 hour period i maxed out to 4 gb on sbs 2011 with 8 gb and system got very slow

    • Peter Bursky says:

      Not sure if a minumum value is required, but we notice a similar behavior – if only the max value was set, the upper limit was ignored and the Exchange ram usage climbed up again.

      Only after setting a minimum value as well the system seems to be keeping the set limits. So what we did is set the lower limit to 2 GB and set the upper limit to 4GB (easy to derive the numbers).

  2. Lewis says:

    Is it the store.exe service that takes all the memory?

  3. jim Jamison says:

    I just finished an SBS 2011 migration from SBS 2003. On the new server with 12GB RAM the memory usage was running at 95% with no one connected to the server. After applying 131072 for the max setting (4GB) and a min setting of 256, the server memory usage with no on one connected to the server the memory usage is now around 6GB. Will see what the memory usage is Monday after users start using server resources.

  4. Steve says:

    i tried this, restarted store. still went above my value

    393216 for 12GB its not on 13gb 99%ram usage

  5. Chris W says:

    I have a server with the max 32GB ram in it. Exchange using 20gb before changes, mail slow leaving outbox etc etc. No free ram on SBS 2011 server at all.

    Changed the values, set lower limit at 2gb, and Max size at 10gb

    After reboot, store.exe only using 150mb ? Overnight it climbed to 750mb, but as soon as people started connecting it went very slow, 3 mins for email to leave outbox.

    Why would it use less than the minimum size value ?

    • Peter Bursky says:

      Not quite sure about the Min size. All i know is that when it’s not set, the Max size didn’t seem to apply either.

      I have an sbs i just restarted, limits set to 1GB and 6GB, yet the store is using just under 0.5GB of ram.

      How many users are we talking about?

      • Chris W says:

        They have currently 18 active users. The mailboxes range from 1gb up to 5gb.

        Total size of the Priv1.edb is 80gb

  6. Chris W says:

    I have been looking at this all day. Store.exe is now using roughly 1gb.

    I had a look at the Avg. Disk Queue at it was up near 30 ! From my understanding on a 2 disk Raid 1 config this should be nearer 4. Turned of SBSmonitoring and it has now dropped this down to 1.

    I may remove the Min & Max settings now and leave sbsmonitoring disabled and see how it runs.

  7. Tom Phillips says:

    We currently are running a Dell PowerEdge T610 with MS SB Server 2011 Standard with 24 GB of ram. My question is if I limit Exchange 2010 as you show above, will the “File server” aspect speed up? We upgraded from SBS 2003 to this new server 2 years ago and have at times regretted it. The overall performance of the file server as dropped from our previous 2003 server.

  8. Craig says:

    Hi There,

    I have the same problem with an exchange server using 52GB of free ram running the server at 99% all the time. Only about 40 users. when rebooted it idles at 5GB.

    I want to input limits but not sure how the conversion works.

    Its exchange 2010 i want to use:

    40GB for max
    4GB for min

    what conversion do I use? is it to bits, bytes?

    Thanks

    • Peter Bursky says:

      Hi Craig

      The numbers in these settings are in PAGES. For Exchange 2010 a page is 32KB.
      In your example, for min you can use 131072 pages (4GB), and for max 1310720 pages (40GB).

      Hope this helps..

  9. Frank Pineda says:

    It worked for me.

    I have SBS2011 with Exch2010 no more than 10 users and store.exe was taking up to 10GB of Server’s RAM (16GB on a Physical box).

    I followed the steps above and restarted Information Store service and the RAM consumption is between the min and max ranges and no degradation of service have been seen so far.

  10. Hi all.
    I was having memory hog with my sbs2011 and ex2010 and i try the settings but i realize that for what i want to put as 1 gb and 4 gb as min and max the values set was :
    Exchange 2007:

    Min – 1GB: msExchESEParamCacheSizeMin = 131072

    Max – 4GB: msExchESEParamCacheSizeMax = 524288

    The ones for ex2007 and not he ones for ex2010 on this post.

    Try and test the results.
    My ex2010 is now fully working between 1 and 4 gb as i wanted since day 1.
    My sbs2011 in working in Hyper-v vm with 9 gm ram.

  11. Peter Bursky says:

    Hi Roberto

    the settings for exchange 2010 are further down the page. For the settings you are looking for you can use:
    Min – 1GB: msExchESEParamCacheSizeMin = 32768
    Max – 4GB: msExchESEParamCacheSizeMax = 131072

    Hope this helps
    Peter