Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

The IIS worker processes are taking lot of memory on our servers. I want to limit the memory each application can use. I am confused whether I should set a limit on Virtual Memory Limit, or Private Memory Limit. Each application in our IIS is on its own application pool.

If I set private memory limit to 500MB and virtual memory limit to 3GB. When does the application pool recycle? Does it recycles after reaching 500MB or after reaching 3GB.

share|improve this question
    
Where are these 'Virtual Memory Limit' and 'Private Memory Limit' options that you talk of? –  Colonel Panic May 23 '13 at 14:01
1  
@ColonelPanic On IIS7.5, they're under an app pool's Advanced Settings -> Recycling section. –  ngm Oct 7 '13 at 9:08

1 Answer 1

up vote 4 down vote accepted

IIS will respect both of those limits.

If you set a 500MB private byte limit, as soon as a worker process attempts to commit 501MB, IIS will spin up a new worker process and kill the old one.

If you set a 3GB virtual memory limit, as soon as a worker process attempts to reserve 3.001GB, IIS will spin up a new worker process and kill the old one.

If you are on a 64bit platform, you should be aware that ASP.NET app's aggressively reserve virtual memory. As an example, I have an app on a farm that uses only 88MB of private bytes, but its sitting at 5.4GB Virtual Size right now. I believe the virtual memory reservation is a function of physical RAM on the server. It's also important to understand that on a 64bit platform, reserving large portions of virtual memory has zero performance impact.

Basically, if you are having memory consumption issues on an IIS server, the setting you want to limit is Private Memory/Bytes, this is what corresponds to actual memory usage.

share|improve this answer
    
Thanks Dominic, Is there a way we can set a process to use 500Mb private memory and once it crosses that limit, start using virtual memory on the disk without recycling? –  kishore Aug 6 '10 at 17:05
1  
Not that I'm aware of. In an ASP.NET application once you start to have commit bytes issues you basically have 3 options. 1. Recycle the process when you reach the limit or nightly at an off hour (obviously not preferred, and don't forget to manage session data correctly if recycling during a usage window) 2. Get additional physical memory for the application (add RAM to server farm, or move to different farm, this can be the simplest solution depending on your situation). 3. Modify the application such that it uses memory more efficiently. (Best option, but may be difficult to implement) –  Dominic D Aug 6 '10 at 18:54

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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