Note that ASP.NET also has Web garden and processor affinity features that are completely different from the IIS 6.0 implementation. You can find the settings for these features in the processModel element of the machine.config XML file, the primary configuration file for ASP.NET applications. IIS 6.0 completely ignores the machine.config settings for Web garden and processor affinity; only IIS 5.x uses them. For more information about ASP.NET and IIS 6.0, see "How ASP.NET Works with IIS 6.0" (http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/iis/iis6/proddocs/resguide/iisrg_arc_dkvi.asp).
Windows System Resource Manager
You can lose all the benefits of process isolation that application pools offer if your applications overconsume system resources. Sure, you can configure an application to recycle when too much memory is used, but wouldn't you rather be able to allocate a maximum amount of RAM for the application to use? Also, if your application is CPU-intensive, IIS 6.0 has little in terms of built-in capabilities to help you because its built-in CPU monitoring does little more than turn the application on and off. As a user-mode application, IIS 6.0 just doesn't have a lot of rights to manage what goes on in kernel mode and therefore can't really self-regulate these matters.
To solve these problems, Microsoft provides a significant new service called the Windows System Resource Manager. WSRM runs only on Windows 2003, Enterprise Edition and Windows 2003, Datacenter Edition, but you can manage it from any Windows 2003 server. With WSRM installed, you can configure a process (including services) so that it won't use more than a specified amount of memory or CPU capacity. In addition, you can assign applications to specific CPUs. Thus, you can designate applications that must have high availability to specific CPUs and assign other processes and services to run on the remaining CPUs--without using IIS 6.0's processor affinity feature. Performance monitoring, the ability to enforce limits based on date and time, the ability to include and exclude users, and logging functions are also built into WSRM. If you need to reliably enforce memory or CPU use on your server, WSRM is the way to go. For more information about WSRM, see http://www.microsoft.com/windowsserver2003/downloads/wsrm.mspx.
BITS
Almost completely unheralded is a new feature called Background Intelligent Transfer Service (BITS)--what I call a "dribble service." Aside from offering the entertainment value of seeing your colleagues look at you in disbelief when you say "dribble service," BITS has the practical aim of conserving bandwidth, thereby increasing availability under high loads.
When installed, BITS manages downloads from and uploads to the server by using "spare bandwidth" to deliver content to the client. BITS also tracks requested downloads and lets you queue and resume requests. As Figure 3 shows, you can configure several parameters, including maximum file size, how frequently to purge the queue of incomplete jobs, and whether to enable limited support for server farms. If you've downloaded large files from MSDN, you'll recognize the client-side window that shows the status of your download activity.
The BITS service isn't installed by default when you install IIS. You can install BITS on Windows 2003 servers by opening the Control Panel and selecting Add/Remove Programs, Windows Components, Application Server, Internet Information Services (IIS), Background Intelligent Transfer Service Server Extensions. To download a version of BITS that runs on Win2K Server with IIS 5.0, go to http://www.microsoft.com/downloads/details.aspx?familyid=17967848-be86-4cd6-891c-ec8241611ad4&displaylang=en.
Be sure to check out the Help files for important details about security and virtual directories that are BITS-enabled. BITS bypasses IIS 6.0 security settings and lets you upload files to a folder that has the IIS-based Write permission disabled. Normal NTFS security permissions are enforced. As a bonus, BITS has a software development kit (SDK) that you can download at http://www.microsoft.com/downloads/details.aspx?familyid=ad9fb937-62f9-4b9f-993b-f754f968b8a6&displaylang=en. BITS works with SSL, is fully programmable, and uses Windows authentication and NTFS, so perhaps it's the badly needed replacement for FTP to publish files to an IIS server without using Microsoft FrontPage Server Extensions.
Newly Reliable
As I've discussed in this article, IIS 6.0 features
- isolated applications that you can insulate from poorly behaving Web applications
- automatic recycling of nonresponsive applications by an independent service
- automatic recycling of worker processes based on programmable events or configurable parameters
- assignment of application pools to designated CPUs
- limited application consumption of memory and CPU time
- managed file uploads and downloads that don't overconsume bandwidth
These capabilities plus others that I haven't mentioned due to space constraints (such as Quality of Service--QoS--policies to restrict bandwidth for IIS) make a compelling case that IIS 6.0 is far more reliable than any previous version of the IIS server. Add IIS 6.0's performance and security improvements and the universally good reports I've heard from those who've deployed IIS 6.0, and you have several good reasons to move to the Web server's latest version.
End of Article
cscript %SYSTEMROOT%\Inetpub\AdminScripts\adsutil.vbs
set W3SVC/AppPools/LogEventOnRecycle 0xff
activenet April 13, 2004