Our Exchange server has been locking up lately, not terribly often so it isn’t the end of the world, but it obviously should not be happening at all. I eventually noticed an error in the event log that only shows up after a reboot so I didn’t notice it right away. We are running Exchange 2003 on a Server 2003 (32bit) box with 4 gigs of RAM. Hopefully upgrading this year…
Event ID: 9665
The memory settings for this server are not optimal for Exchange.
Then it links to the first article at the bottom of this post. Not being one who likes to jump right into registry settings on a server I first downloaded the best practices analyzer for Exchange and ran that to see if anything other issues came up and to see if it would be a little more helpful with what specific things I should look at for the memory problem.
The issues it found relating to memory utilization were:
- ‘SystemPages’ set too high
- ‘HeapDeCommitFreeBlockThreshold’ not set
- ‘SystemPages’ setting – this second entry actually recommends the value to set it at to be zero.
- USERVA is set incorrectly
The SystemPages setting was recommended to be set to zero in the BPA so I did that right away seeing as how it looked to be the easiest fix. The next two things I tried were adding the /3GB and /USERVA=3030 switches to the boot.ini file. Now right off the bat I didn’t think it worked properly because after hitting OK it showed 3030 being a separate OS entry even though I know I put it all on one line. I didn’t want to make all the registry changes at the same time in case I broke something so I held off on doing anything else. I rebooted the machine over night but still saw event 9665 in the log. Here is what the boot.ini file looked like after adding the switches:
multi(0)disk(0)rdisk(0)partition(2)\WINNT=”Microsoft Windows Server 2003″ /fastdetect /NoExecute=OptOut /3GB /Userva=3030
I googled the USERVA switch and came across a couple forums talking about them (the last 2 bullets) and they both said to replace the /NoExecute switch with /Execute. I did some research before making the change to see if it would really matter. I have a gist of what /noexecute does but do not fully understand the pros/cons of using it or not using it. So to test it out I swapped out the switches and right away noticed that 3030 was not listed in the drop down as an OS. That makes me think the switches are set properly.
I have yet to restart the Exchange server to test these changes. I am debating whether to do it tonight again or wait until Friday. It makes me cringe a little when I make changes that require reboots on the servers during the week. There is always that fear of them not coming back up properly. I think I will wait until Friday and report back – but I have a feeling this will work.
Update: After rebooting over the long weekend I came in today and ran the BPA again. All of the errors mentioned above were fixed. /win
- How to optimize memory usage in Exchange Server 2003 (KB815372)
- Exchange best practices analyzer
- SystemPages set too high
- How to Set the HeapDeCommitFreeBlockThreshold Registry Value (technet)
- Using the /Userva switch on Windows Server 2003-based computers that are running Exchange Server (KB810371)
- USERVA is set incorrectly
- 3GB switch how to