Microsoft Internet Information Services (IIS) is the world’s second most popular Web server after the Apache HTTP Server. IIS is available within all Windows operating system editions in different flavors. It is constantly evolving and maturing. IIS 6.0 made a major step forward in enabling using IIS not only as a Web server but also as an application server. IIS 7.0, the
latest IIS release, continues this path by adding important capabilities that contribute also to performance and reliability.
IIS includes the following servers: FTP/FTPS, SMTP, NNTP, and HTTP/HTTPS. This chapter focuses on the HTTP/HTTPS server. It covers IIS architecture, performance monitoring, and some tuning guidelines. The focus in this chapter is mainly on IIS 6.0, although IIS 7.0 is mentioned where necessary.
IIS runs a server in one of two distinct request processing models, called application isolation modes. Application isolation is the separation of applications by process boundaries that prevents one application or Web site from affecting another and reduces the time spent restarting services to correct problems related to applications. IIS 6.0 supports two application isolation modes. Each mode has a different configuration:
- Worker Process Isolation mode. Supports grouping Web applications into application pools thus enabling each application to function within a self-contained worker process. A worker process is user-mode code whose role is to process requests, such as returning a static page or invoking an Internet Server API (ISAPI) extension or filter. This mode delivers all the benefits of IIS 6.0 architecture, including multiple application pools, health monitoring and recycling, increased security and performance, improved scalability, and processor affinity.
- IIS 5.0 Isolation mode. Provides compatibility for applications that were designed to run in earlier versions of IIS. When IIS 6.0 is running in this mode, request processing is almost identical to the request processing in IIS 5.0. Unless your application does not function in worker process isolation mode, it is not recommended to use this mode.
Both modes rely on the HTTP protocol stack (HTTP.sys) to receive HTTP requests and return responses. HTTP.sys listens for HTTP requests, queues them and return responses after the requests where processed. HTTP.sys resides in Kernel Mode where operating system code, such as device drivers, runs. This ensures that the operating system manages HTTP
requests in high priority. The actual processing of the request is done in User Mode by the relevant Worker process.
The application pool can host multiple Worker processes, thus provides load balancing and failover capabilities. This contributes to the performance, reliability, and scalability of the application. An application pool that contains more than one Worker processes is called a Web garden. As mentioned earlier, IIS provides four internet services: the World Wide Web Publishing Service (WWW service) for hosting Internet and intranet content; the File Transfer Protocol (FTP) service for hosting sites where users can upload and download files; the Network News Transfer Protocol (NNTP)
service for hosting discussion groups; and the Simple Mail Transfer Protocol (SMTP) service for sending and receiving email messages. It is recommended to disable/uninstall unused services in order to reduce IIS footprint. IIS 7.0 introduces a few architectural enhancements:
- A new service, Windows Process Activation Service (WAS), was added. Enables sites to use protocols other than HTTP/HTTPS.
- Integration of request processing pipelines from IIS and ASP.NET. This capability is related to the application pool modes supported in IIS 7.0.
- IIS 5.0 isolation mode is no longer supported
- IIS 6.0 Worker Process Isolation mode continues to be supported
- A new mode, Integrated Application Pool mode, was added in order to allow integrated request processing of IIS and ASP.NET
- Web Server engine can be customized by adding or removing modules.
IIS performance counters are exposed through the Microsoft Windows performance data helper library (pdh.dll) which is the general monitoring platform of Windows. This means that each IIS performance counter is numeric and is uniquely identified by its path, usually in the following syntax:
The Computer_name portion of the path is optional. Both SiteScope and LoadRunner use the Windows pdh interface for
monitoring IIS and ASP/ASP.NET related counters. To invoke the pdh interface from a remote machine, Windows requires authentication using a user that has appropriate permissions. As a best practice, it is recommended to gain good understanding of your application architecture and deployment. This information is useful while performing different performance engineering practices throughout the product lifecycle. For example, there is no reason to have the IIS FTP server or Frontpage Server extensions running if they are not being used. Also, there is no reason to monitor Active Server Pages if your application is completely ASP.NET based.