Solved

IIS 7 Application Pool Guidance

Posted on 2009-07-03
14
2,925 Views
Last Modified: 2013-11-07
Hi All

I am looking for some guidance on application pool usage within Server 08, IIS7 and .NET 2.0 (if it helps the server is a dual quad core xeon 2.6 with 8gb ram and fast HDD's)

On our server we have approximately 100 sites. They all use a common DLL and set of files. Each website is configured with locally relevant files in d:/webfiles/websitename/wwwroot/
Then each website has a virutal directory that maps to a d:/webfiles/common/ folder. The application runs locally and within the shared virtual directory.

All websites and virtual directories are currently using the same "Default Application" pool setup in IIS. We also have DLL's running the Global Assembly Cache, but I believe this is of no consequence here.

My question is, which is a better setup in terms of performance and resiliancy?
1 website = 1 application pool serving the local website and virtual directory?

or

Stick with current layout mapping all websites and VD's to the same Application Pool?

I know that each website and virtual directory must use the same app pool because of the way our virtual directory utilises session management with the Common directory. I am happy with running it 1 website, 1 app pool.

However, my thoughts are for every application/virtual directory running the Application Pool (whether individual or shared) must load into memory a copy of that DLL and other managed code. It must then also swap memory and process requests all inside the same shared piece of memory and worker process (possibly only utilising one CPU?).

Are there limitations on how many requests a single work process can handle, and would it be more efficient to let each website have its own worker process and utilise the 8 core's and 8gb of memory more efficiently? Would it make a difference?

Thanks for your help.
0
Comment
Question by:eonic
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 3
  • 2
14 Comments
 
LVL 37

Expert Comment

by:meverest
ID: 24775338
Hi,

it is always best to isolate applications into independent app pools.  When the applications are small or seldom used, then it is OK to group them into a single pool.

the idea of seperation is so that when there is a problem with any application, it does not affect any other one.  The idea of sharing an application pool is to reduce resource overheads when there are a large number of relatively low demand apps.

at the very least, you should make a seperate application pool per customer (or per web site)

cheers.
0
 
LVL 1

Author Comment

by:eonic
ID: 24776416
Hi,

Can you pass any comment on the usage of the CPU cores and app pools, would I be right in saying that if you share a single app pool that app pool can only utilise 1 of the available 8 cores on my server?

Also would it cause performance issues with it only using that one piece if allocated memory.

I am confident it is better for redundancy, however performance is also a big concern.

Thanks for your help
Anthony
0
 
LVL 37

Expert Comment

by:meverest
ID: 24776435
Hi,

you can set processor affinity for individual application pools, if you want to - check out SmpAffinityMask settings.

>> would I be right in saying that if you share a single app pool that app pool can only utilise 1 of the available 8 cores on my server?

only if you /intend/ to do that.

cheers.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 22

Assisted Solution

by:cj_1969
cj_1969 earned 250 total points
ID: 24784426
Just to throw this into the mix ...
Using app pools will also depend on how you use the applications on the server.
Using app pools will logically seperate the applications from each other, not only for execution for also for interaction.  
SO ...
If any of the applications need to redirect to another then you should try this ... they might have to stay in the same application pool if they need to do this or to share data or pass variables or something along these lines.
0
 
LVL 1

Author Comment

by:eonic
ID: 24801619
Hi

In terms of interacting with each other, the Websit Root & Common virtual directory (found inside every website) uses the same app pool. This is required as you said to ensure session data etc is transferred. No data is transferred cross domain, only within the /root and /common folder of each website.

So to try and acheive a solution for me...

What would you suggest. Bearing in mind 150 completely seperate websites. But all utilising the same DLL in seperate applications. This means if i set it up al usng same app pool, there would be 150 applications all loading and using a copy of the same DLL into that app pool.

All in one? or Each website in seperate app pool?

Bearing in mind i am trying to acheieve a good balanc between performance and resiliancy.

Thanks
Anthony
0
 
LVL 37

Expert Comment

by:meverest
ID: 24803682
Hi,

I maintain that it is /always/ preferable to separate your applications into independent pools.  the only reason that you would not do it is because you don't want to.  You might not want to if you have lots of low-utilisation applications and you want to share resources for them all.

Regarding sharing of session information between applications, there are two comments that I would like to make:

1.  you will only share session information if the applications are accessed by the same hostname - the browser will not submit the session cookie between web sites (that is a security requirement)
2.  if you are sharing session data, then they are arguably the same application.  If you really need to share data between applications, then session data is not the way to do it anyhow.

I don't understand why access to a single dll would require only one application pool.  If the dll is constructed properly thread-safe, then it should not make any difference if it is accessed via one application pool or many.

Cheers!
0
 
LVL 22

Expert Comment

by:cj_1969
ID: 24803792
I agree ... seperate app pools is the preferred way to go.
meverset,
in your comment you identified the reason why you MIGHT need to do a single app pool ... "If the dll is constructed properly " ... IF being the operative word.  I've worked with too many apps and programmers to assume that it is.  This would need to be tested and verified.
0
 
LVL 1

Author Comment

by:eonic
ID: 24893795
Can a single app pool utilise more than one processor?

Is there a limit on the amount of memory a 64bit worker process can utilise?

Anthony
0
 
LVL 37

Accepted Solution

by:
meverest earned 250 total points
ID: 24894109
Hi,

>> Can a single app pool utilise more than one processor?

they do by default.  you can change this behaviour if you want to:

http://technet.microsoft.com/en-us/library/cc780123(WS.10).aspx

>> Is there a limit on the amount of memory a 64bit worker process can utilise?

not that I am aware of.  but again, you can define a limit (if you want to) by causing it to recycle when it reaches a defined consuption level.

Cheers.
0
 
LVL 37

Expert Comment

by:meverest
ID: 25236744
I believe that the question has been fully answered by the two expert participants.
0
 
LVL 37

Expert Comment

by:meverest
ID: 25250488
hello suggest split: solution http:#24894109 assist http:#24784426 

cheers.
0

Featured Post

Visualize your virtual and backup environments

Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When it comes to showing a 404 error page to your visitors, you do not want that generic page to show, and you especially do not want your hosting provider’s ad error page to show either. In this article, I will show you how to enable the custom 40…
As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

756 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question