.net – Worker process recycles because it reached its virtual memory limit

application-pooliis-6net

We host a rather large (self written) ASP.NET website for our customers. It consists of a web service, a web site and a image serving web site, all three in their own virtual directory. The three virtual directories are together in one application pool. The pool has both memory limits (maximum virtual memory and maximum used memory) set to 500 megabytes.

However, the application pool suffers many recycles, even with only one user at a time.
The eventlog message says:

A worker process with process id of 'xxxx' serving application pool 'xxxx' has requested a recycle because it reached its virtual memory limit.

However, observing the worker process with Process Explorer shows nothing that supports this message. Which counters should I watch to observe the memory that is in fact limited by both settings?

Update 1

Observing the process in Task Manager shows a 'mem usage' and 'vm size' of around 100 MB, still the process is recycled with the above message. 5 GB physical memory available on the server…

Update 2

Although the web site is rather large, the problem concentrates in a small portion of the application. It executes a query (using Oracle) and binds the results to a gridview and repeater webcontrol. The results consists of a short description and an icon (loaded through the image serving web site). If I execute 10 search actions after each other, each giving 9 results, the work process shows mem usage and vm size of around 100 MB and recycles…

Update 3
Switching of the usage of the image serving web site does not result in better results. So I think it is fair to say that the problem is something else.

Best Answer

Just as an observation... If your "image serving" site happens to do any inline image processing/generation, you can quickly swallow up memory by not calling Dispose() on any disposable resources - particularly those that are wrapping native functionality...

It's not a direct answer to your question, but it might help to look into the underlying problem that is causing the rampant memory use.

Related Topic