Re: Performance question (IIS 6)

From: David Wang [Msft] (someone_at_online.microsoft.com)
Date: 06/01/04


Date: Mon, 31 May 2004 19:25:39 -0700

IIS6 is designed to be frugal with system resources. Thus, Application
Pools load "on-demand", and they unload "on-idle timeout".

The delay on the first request is due to interaction between IIS process
recycling and CLR's initialization costs. CLR initialization happens once
per process, but IIS6 recycles processes based on many parameters, include
idleness, to conserve resources. Thus, every time IIS6 recycles a process,
subsequent managed code execution take the CLR initialization hit.

IIS6 does not have any provisions to "pre-load" application pools -- doesn't
make sense when Application Pools are designed to be loaded "on demand".
You can do this yourself by making a request to the necessary application
pools to trigger them to load. It is quite trivial to use the many existing
web request making tools and automate a little "warm-up" script to do this.

My suggestion for your non-production environment would be:
1. Turn off all the application pool recycling parameters except maybe the
memory based ones (ASP.Net and Web Services can take advantage of it, should
they start hogging too much memory)
2. Make one request to spin up each of the application pools that you use to
host Web Services

This should prevent you from hitting the delay caused by loading the CLR
until you reboot the server.

It is quite odd to optimize against "startup costs" when one frequently
reboots the server because the act of rebooting incurs infinite startup
costs for everything.

-- 
//David
IIS
This posting is provided "AS IS" with no warranties, and confers no rights.
//
"Glen Appleton" <buglen@hotmail.com> wrote in message
news:OR13jEmREHA.904@TK2MSFTNGP12.phx.gbl...
Hi there,
I have a development network setup with one server (2003 Ent) and one
workstation (XP Pro SP1) that I'm using for learning and testing web
services.  I have all the updates on the 2003 server with IIS 6 and the
latest FP extensions installed with Windows SharePoint Services and SQL
Server Reporting Services running.
After I boot up the server each day, the first time I log into any of the
sites on the box it takes quite a bit longer than any subsequent visits
until I have to reset IIS for some updates.  Is this due to the idle time
out settings on the web site application pools?  Since this is basically a
single user scenerio, how can I set it up to pre-load the application pools
as IIS starts up to get better performance?
Thank you for any help you can provide.
    - Glen


Relevant Pages

  • Re: Page Cannot Be Displayed Errors
    ... In WFetch, for Advanced Request, change to "Add Headers" and write: ... > directly on the web server, ... >>> Where can I get the IIS 6.0 Resource Kit, and how do I use WFetch? ...
    (microsoft.public.inetserver.iis)
  • Re: Page Cannot Be Displayed Errors
    ... not IIS, but something else. ... >>> directly on the web server, ... >>>>> I have done some additional checking in the logs. ... >>>>> either the request isn't even getting to IIS at this point, ...
    (microsoft.public.inetserver.iis)
  • Re: Page Cannot Be Displayed Errors
    ... "Jesse" wrote in message ... >> In WFetch, for Advanced Request, change to "Add Headers" and write: ... >>> directly on the web server, ... >>>>> Where can I get the IIS 6.0 Resource Kit, and how do I use WFetch? ...
    (microsoft.public.inetserver.iis)
  • Re: Page Cannot Be Displayed Errors
    ... I have remote access to the server through Remote Desktop, ... Where can I get the IIS 6.0 Resource Kit, and how do I use WFetch? ... following through with the request, ... > It sounds like you are quite close to the webserver. ...
    (microsoft.public.inetserver.iis)
  • Re: Recycled Application Pool
    ... There's different ways to manage IIS 5 and IIS 6. ... recycling settings, to see if anything rings a bell. ... If you need to persist your session values, ... IIS's State Server or with SQL Server. ...
    (microsoft.public.dotnet.framework.aspnet)