I have a server with a non-paged memory issue. Usage slowly climbs until it is exhausted and the server stops serving web pages as IIS cant get enough non paged memory.

This a 32bit windows 2003 server.

Task manager shows no suspicious activity and all the running processes there are consuming 'normal' amounts of NP memory and they all stay rock steady over time.

The tag showing all the usage is 'Even' which is for the Event Viewer according to the tag list. No other warnings or errors are showing up in the event logs except when the NP memory is exhausted and IIS starts to complain.

Server runs MSSQL, IIS and hMailserver, nothing else.

Anyone have any ideas or seen this before..? I'd have somewhere to go if it was a tag associated with a driver like a network card or something but Event Viewer, where do I go with that!

Poolmon output for EVEN

Tag    Type   Allocs            Frees             Diff     Bytes       Per    Alloc
Even   NonP   65563201 ( 948)   64585254 ( 861)   980124   47049280 ( -2384)   48



First thing I'd check is to make sure that max server memory (MB) is set in SQL Server. This is a server option that tells SQL Server "this is all the memory you can have". By default SQL Server will use all available memory for things like data caches which can be bad news in a shared environment like what you have.

In your SQL instance, open a new query window and type in:

sp_configure 'show advanced options',1
sp_configure 'max server memory (MB)'

If the value for config_value is 0 then it means SQL Server is allowed to take all the memory it wants. In that case you should set it to something more reasonable for your environment.

You don't mention how much memory your server has, but since you're in a 32-bit environment (and you also don't specify which edition of Windows) I'm going to go ahead and assume 4GB. You might want to limit SQL to 1GB to allow for other application services. You can do this like this:

sp_configure 'max server memory (MB)',1000

If you are using Windows 2003 Enterprise and have > 4GB of memory you can of course set max memory to more than that.

You might also want to investigate using Address Windowing Extensions (AWE) which can give you some more breathing room. You can read about it on TechNet here.


When the issue is occurring, open Task Manager and add the Handles column. Sort on that column and look for any values that seem excessive. It may help to get a baseline of the server at boot and over time. How long after boot does it tend to take to see the issue? There's a good chance the process with the highest/unusual number of handles will be your culprit, although determining exactly why may be a whole other beast.

In my case, I've seen it caused by a CommVault (backup) agent failed uninstall that left a nonfunctional service behind that created a two handles to HKCU (registry) every few seconds. Every open handle consumes some memory and eventually brought an entire organization's Exchange environment to its knees.

Sysinternals handle.exe can also be of use in seeing what processes are using many handles and to which objects are attached to.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.