Worker process recycles because it reached its virtual memory limit

不羁的心 提交于 2019-12-01 00:18:29

问题


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.


回答1:


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.




回答2:


This might be useful link:

http://blogs.msdn.com/tom/archive/2008/06/25/asp-net-tips-finding-what-is-taking-up-memory.aspx

(And earlier posts which explain some more context to what he's doing)




回答3:


I had the same problem with a Virtual Machine when we upgraded memory size from 4Gb to 8Gb (ironically). I found this blog which explains we can use "private memory limit" but not "virtual memory limit" with 64bit system, because : "If you are on a 64bit platform (and I am), ASP.NET app's aggressively reserve virtual memory".

http://blog.walteralmeida.com/2011/07/iis7-private-memory-limit-versus-virtual-memory-limit.html




回答4:


Try using the Windows Task Manager. On the processes tab, go to the View menu and choose Select Columns. Select the Virtual Memory Size column and then observe the value for the asp.net worker process.



来源:https://stackoverflow.com/questions/381088/worker-process-recycles-because-it-reached-its-virtual-memory-limit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!