IIS Metabase Registry

by Wayne Maples [Published on 20 April 2004 / Last Updated on 20 April 2004]

Microsoft stores application settings and operating system settings in the registry. To allow IIS to be reconfigured without rebooting the box, Microsoft moved the major IIS registry setting out of the registry to a registry-like memory structure called the metabase. Prior to IIS 4.0, fundamental changes required the box to be rebooted because the changes to the registry were not functional except after a reboot of the operating system. After the metabase, all you have to do is stop and start IIS. This dynamic registry, the metabase, is loaded into memory and stays there until the box is shutdown.

Another advantage is that the metabase can be backed up and restored separately from the entire registry, potentially allowing for a decoupling of the web server from the hardware, making migration to a new box less of a hassle.

OK! now you know about IIS' metabase registry. How do you edit it? Hopefully you will study it carefully prior to experimenting. To do this, you need the Metabase Editor. See Q232068: How to Download, Install, and Uninstall the IIS MetaEdit 2.2 Utility . Use the info in Q232068 to backup the metabase first thing.

Once you install and use the Metabase Editor, you will realize you already know how to use it. It is modelled after the REGEDIT registry editor. Remember that as you experiment, changes take effect after you stop and restart IIS.

If you make a lot of changes, and your webservr performance sucks, which twiddle did it? Be liberal with backups of the metabase. One per twiddle. Document your experiments, sorry, performance improvements. Actually, IIS is configured for a moderate sized site out of the box. Unless you have heavy traffic, leave well enough alone.

If you have a real need, the most important keys are:

  • ASPProcessorThreadMax
    maximum number of threads per processor that IIS can create. The default=25. Generally this is fine but if you have a LOT of concurrent users and the activity per user is not high, you can set ASPProcessorThreadMax higher.
  • ASPQueueTimeout
    How long can an ASP page stay in its queue. The default is 15 seconds before generating a "Server Too Busy" error.
  • ASPRequestQueueMax
    Each IIS sub-site gets its own queue with a default of 3000. When the queue is full, which you will see on the internet occasionally, you get a "Server Too Busy" error. Not likely on an Intranet site.
  • ASPScriptEngineCacheMax
    max number of ASP script engines that can be cached (precompiled scripts), default=250. Do you have more than 250 different scripts?
  • ASPThreadGateEnabled
    Thread gating allows IIS to spawn new threads to handle the server's load.
  • MaxEndPointConnections
    how many sockets IIS will aggregate on a given port. If you are supporting a few heavy virutal sites, that is using different nic addresses or ports, set this to a reasonable number for your server. This is simultaneous. Whether its 20, 200, or 2000 depends on your traffic patterns and virtual sites. Each of these structures created uses memory.
  • ServerListenBackLog
    number of outstanding sockets that can be queued, default=200.
Please let me know let your experiences experimenting with these and other metabase elements. Milage will certainly vary. Particularly if you see good technical info to add to this tip.

See Also

Featured Links