We're running some X64 Win Server 2012 webservers (So IIS 8).
We're noticing that the free memory on the boxes is constantly sitting at 5-10% free. We actually run quite a lot of applications on these boxes (13 sites, 80 apps over 13 app pools). Most of the code is duplicated for each site as they correspond to a different database and physical site, but the application is the same.
We're pretty confident that we have a memory leak in the application as the memory just keeps growing, so we're looking at that straight off the bat, but something I'm confused about is the memory allocation and management of IIS. I'm wondering if it's any different for IIS 8 or x64 servers (we just moved to x64 recently).
So basically each of our webservers had 6GB of memory and would sit at 5-10% free memory. The top application that we're sure is leaking was using a whopping 1.2gb of memory. The next was about 800MB and the rest averaged to about 400-500MB (All these values are private memory, as seen in task manager) As I said the code is duplicated so if there is a leak in one site it will be in all of them, it's just that different physical locations can have some features switched on or off, which explains the big discrepancy.
While we work out the problem we decided to just up the memory so we don't run into issues. So last night I brought down each server and doubled the memory to 12GB. This morning the 3 servers are sitting at 77%, 80% and 82% used memory. All of the processes have increased their memory usage by 1.5-2 times.
So now I'm confused. Is it really a memory leak? Or is there some sort of memory pre-allocation? Or does it never release memory unless another process requests it a la SQL Server or what?
What was keeping the memory levels in check at 6GB if they suddenly grow so huge when the memory doubles? Are there threshholds that are set? Does IIS/ASP simply not garbage collect until memory is low or what?
Any answers are appreciated.