How much memory does each apppool use by default in IIS 6.0? - iis-6

How much memory does Windows or IIS 6.0 allocate by default for each web site when each site runs in its own AppPool? The effect memory wise when web sites share the same AppPool vs each in a separate one. I am talking about when websites start up, not when web sites start using memory when they run applications.

Vanilla Windows server 2003 IIS 6.0 process consumes about 5mb of memory.

Related

Do IIS Web Applications that use the same App Pool share DLLs in memory?

I inherited a large web site. To the user, it consists of 20 "modules" with different functionality. Each module can be accessed via a menu from each other module.
Each module has been implemented as a separate Web Application in IIS, all sitting under the Default Web Site. They all use the same App Pool. All implemented in ASP.NET Core (net5).
The modules share about 70% of their code. This library code sits in several projects. The web application projects all have References to the library DLLs. After everything has been built, the bin folder of each web application project has a copy of the library DLLs (so there are then 20 copies of each library DLL on disk).
Assuming that web application 1 is receiving requests and has been loaded into server memory. If web application 2 then gets loaded into server memory, will the library DLLs then be loaded into memory again for web application 2? Or will web application 2 use the library DLLs that have already been loaded into memory for web application 1? As in, after web applications 1 and 2 have been loaded in memory, will there be 1 copy of the library cod in memory or 2 copies?
Reason behind the question is that I need to reduce memory usage on the web server. There are no operational benefits to having separate web applications. They are all deployed together in one go. We never start or stop just one of them, it is always all or nothing. Wondering if I can save memory by having 1 big web application instead of 20 smaller web applications.
Your ASP.NET Core web apps in the same application pool are configured to use out-of-process hosting, so all their assemblies/libraries are loaded into individual .NET Core processes (Kestrel based) (dotnet.exe usually, or your own executable when self contained deployment is used).
Diagrams in that Microsoft article make it super easy to understand the relationship among the runtime processes.
In that mode, IIS worker process(es) w3wp.exe only loads the ASP.NET Core module to work as reverse proxy.
Combining the two above, the answer to your question Do IIS Web Applications that use the same App Pool share DLLs in memory? is rather clear that nothing is shared and you cannot share anything either due to the process boundary.

IIS process recycle and session variables

Is it a bad idea to setup a web application on client PCs with Windows XP (there are ten workstations), rather than on a server (Windows Server 2003).
I have an ASP.NET application, which has a memory leak and uses session variables. I believe that the session variables may be causing problems when the IIS process recycles. Is there any benefit of installing IIS on a server rather than on workstations?
I was debating to myself whether to ask this question here or on server vault. As my question references session variables I decided to ask it here.
If the problem is regarding session variables or a memory leak it really doesn't matter where you run it because the problem is in code, not in the platform.
The only possible benefit to running a problematic application like this on Windows Server 2003 (IIS 6) rather than on Windows XP (IIS 5.1) is that you can schedule recycles for the Application pools under IIS 6 and may be able to put a band-aid over the problem by recycling often and changing the code to store session out-of-process.
Bottom line - fix the code and run the application where it makes sense to run it.

WCF Service Application does not work with App pool in integrated Pipeline mode

I am running the Windows Server 2012 Release Candidate. For testing purposes I deployed the WCF Service Application from the VS Template without modifications on the Default Website. Retrieving the Service1.svc only works if the App pool is in Classic Pipeline Mode but not in the Integrated one.
If I switch to integrated mode I get a HTTP-Error 404.17 - Not Found.
The Isapi Handler to aspnet_isapi.dll for the *.svc extension is registered for 32 and 64 bit as well. The Service works in classic mode. So the handler registration seems to be partly right.
I already tried setting "Enable 32-Bit Applications" to True. Deploying the Application as 32bit or 64 bit made no differnece neither.
What am I missing?

AppFabric for WCF services on Windows Server 2008 R2

we are currently on windows server 2008 R2, IIS 7.5 and we are going to open some of our data via WCF services.
To do that, we are planing to host our services on IIS but I heard that it is not a good idea for WCF services.
The problem with the WAS is that it is general purpose hosting engine. it's actually unaware that it's actually hosting a WCF service or a website (as far as I know)
I heard that we can install an extension to the WAS called the Windows Server AppFabric.
does anybody have any experience on
AppFabric?
should my app have to use so called
'Service Bus' to use AppFabric?
should I go ahead and definitely
install it?
at most basic level, how and where
can I install it? does it require
any licence?
Thanks in advance.
I don't think IIS us a bad idea - many developers use IIS to host their WCF services. IMHO you'd only use what you need, so if all you need is a hosting framework, then IIS is a very good option for WCF services. It is (almost) unaware that it's hosting a WCF service, but that in the majority of the cases isn't an issue.
Windows Server AppFabric as it's currently released provides three capabilities: a distributed caching system (so if you need to scale out your service you can use this cache to share state among the nodes); a packaging / deployment interface (in which you can package a project and deploy it a little easier in IIS); and a management / monitoring interface (where you can monitor the instances of WCF and Workflow services which are running in your machine).
Answers to your questions:
Yes, some people have experience with it :)
No, the application doesn't have to use it. You'd only use the ServiceBus if you need its functionality (relay)
Only if you need it. If you don't need caching or the monitoring capabilities, for example, then I'd say you don't need it. I've found in the past that the least number of components I have in my system, the less likely it is to break.
Go to http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx. And AFAIK you don't need any license, but you can check on the download page to see if it has more information.
There is no real common reason why not to host a service in IIS/WAS.
If you want to absolutely, totally 100% make sure that your service is continuously running some process, such as a continuous loop or polling monitor, and if any interruption no matter how brief is a major issue, then you'd want to look at alternative hosts.
Win Server AppFabric is most useful for WF Service hosting and caching. Note however that Win Server AppFabric + Win Server Service Bus 1.0 represents the first steps in convergence between the Azure platform and the Windows Server private platform.... In other words, whichever of the two ways you choose, that's what is going to be earning your bread and butter in 5 years time.

WCF Service VS IIS 7.0 VS IIS7.5

I got WCF Service with Fluent NHibernate. When I host it in in IIS7.5 on my development machine(WIN7) it works fine. Worker process shows the clear garbage collection indication of my app pool.
But when I moved to production, which is a Windows Server 2008 with IIS7, Garbage collection is not working, and the virtual bytes in worker process keeps on increasing and got out of memory.
The app pool is configured as Integrated .net 2.0. Has anyone experienced this, or is it a known issue with IIS7.0, or do I miss any settings in my configuration file?
I already tried with timely recycling but it did not have any effect.
Regards,
Pradeep
There are some references to garbage collection running less often on windows 2008 IIS7, than on a development machine, see for example: GC Not Running Often Enough on IIS 7 Application - Windows Server 2008
However, if you are hitting this problem your code is written in such a way that objects are left for the garbage collection to clean up. You should try disposing objects and suppressing finalizations, see http://msdn.microsoft.com/en-us/library/ms973837.aspx especially the code example at the end of the article.