I need to know whether a 3rd party application is leading to out of memory errors in my SQL Server…and I need to know right now.
First things first – depending on the version of SQL Server that you’re using, SQL Server could be creating this problem for itself. See these articles if you’re running SQL Server 2005 pre-SP2:
SQL Server becomes sluggish or appears to stall on 64 bit installations A significant part of sql server process memory has been paged out. This may result in performance degradation How to reduce paging of buffer pool memory in the 64-bit version of SQL Server 2005 The SQL Server Working Set Message
So what’s going on? First we need to address two concepts: Virtual Address Space and Working Set. Windows uses
One common misconception is that there is as much virtual memory available to a process as there is physical memory (RAM) on a machine. Not so (or I wouldn’t be going there); you can get much more depth by reading
So, when troubleshooting out of memory errors, do your homework.
- Check the list above to see whether your SQL Server is suffering from a known SQL Server bug, and understand (at least a little bit about) VAS and memory allocations.
- You can use Performance Monitor (Task Manager won’t help here) to get an idea of how much of VAS is currently consumed inside of your process by looking at the virtual bytes counter.
- If you believe that a 3rd party application is loading DLLs into SQL Server’s VAS, or you want to see if your own CLR or external procedures are doing so use SQL Server’s DMV
sys.dm_os_loaded_modules to see what’s been loaded into SQL Server’s address space.
Oh, and by the way, for anyone who’s used to configuring the
Hope that helps.