New Performance Features

   

A new generation of applications puts a greater demand on performance and scalability attributes of Web servers. Increasing the speed at which HTTP requests can be processed and allowing more applications and sites to run on one server translates directly into fewer servers needed to host a site. It also means that existing hardware investments can be sustained longer while being able to handle greater capacity.

Tip

Preliminary testing suggests performance gains in throughput of up to 100 percent higher on an eight-processor server under particular workloads.


Windows Server 2003 introduces a new kernel-mode driver, HTTP.sys, for HTTP parsing and caching. HTTP is specifically tuned to increase Web server throughput and designed to avoid a processor transition to user mode if the content requested is classified as something that can be directly processed in the kernel. This is important to IIS users because IIS 6.0 is built on top of HTTP.sys. If a user-mode component needs to get involved in the processing of a request, HTTP.sys routes the request to the appropriate user-mode worker process without any other user-mode process getting involved in the routing decision.

IIS 6.0 is also more aware of the processing environment. IIS kernel-mode and user-mode components are written to be aware of processor locality, and they do their best to maintain per-processor internal data locality. This can add to the scalability of a server on multiprocessor systems. Additionally, administrators have the ability to establish affinity between workloads for particular applications or sites and specific processor subsystems. This means that applications can set up virtual application processing silos in one operating system image, as shown in Figure 8-1.

Figure 8-1. This diagram illustrates virtual request processing silos in IIS 6.0.

graphics/f08xo01.jpg

New Kernel-Mode Driver

The new kernel-mode driver, HTTP.sys, is a single point of contact for all incoming (server-side) HTTP requests. This provides high-performance connectivity for HTTP server applications. The driver sits atop TCP/IP and receives all connection requests from the IP/port combinations it's configured to listen on. HTTP.sys is also responsible for overall connection management, bandwidth throttling, and Web server logging.

Note

Preliminary testing suggests performance gains of 200 percent better throughput of static content, and cached responses achieved up to 165 percent higher throughput when compared with IIS 5.0.


Caching Policy

IIS 6.0 has advanced heuristics built in to determine the cacheable hot-set of an application or set of sites. Just because an item is cacheable doesn't mean that adding that item to an in-memory cache is sensible , because managing the item and the memory it consumes has a cost. Therefore, IIS 6.0 uses a new heuristic to determine which items should be cached on the basis of the distribution of requests that a particular application receives. This means that the Web server's scalability improves because it makes better use of the resources on the server while sustaining the performance on frequent requests.

IIS 6.0 also has heuristics built in to monitor the overall state of the server and makes decisions to increase or reduce concurrency on that basis. The central idea here is to be efficient in using concurrency. For example, when executing processor-bound requests, starting concurrent work is not always the best approach.

Web Gardens

A Web garden is an application pool that has multiple processes serving the requests routed to that pool. You can configure the worker processes in a Web garden to be bound to a given set of CPUs on a multiprocessor system. Using Web gardens, Web applications have increased scalability because a software lock in one process does not block all the requests going to an application. If there are four processes in the Web garden, a specific software lock blocks roughly a quarter of the requests.

ASP Template Cache

Before Active Server Pages (ASP) code gets executed in IIS 5.0, the ASP engine compiles an ASP file to an ASP template. These ASP templates are stored in process memory. If a site consists of numerous ASP pages, this cache deallocates the oldest templates from memory to free space for new ones. With IIS 6.0, these templates are persisted on disk. If one of these ASP files gets requested again, the ASP engine loads the template instead of loading the ASP file and spending additional CPU time compiling it again.

Note

Preliminary testing suggests performance improvements of greater than 50 percent higher throughput due to persistent on-disk caching.


Large-Memory Support

For workloads that require a great deal of cached data, IIS 6.0 can be configured to cache up to 64 gigabytes (GB) for an x86 system.

Site Scalability

IIS 6.0 has improved the way internal resources are used. The IIS 6.0 approach is much more one of allocating resources as HTTP requests request certain system resources rather than one of preallocating resources at initialization time. This has resulted in the following improvements:

  • Many more sites can be hosted on a single IIS 6.0 server.

  • A larger number of worker processes can be concurrently active.

  • The server can be started and shut down more quickly while hosting sites.

Preliminary testing shows that the number of pooled applications that can be run on IIS 6.0 is an order of magnitude greater than on IIS 5.0. IIS 6.0 is capable of having thousands of isolated applications configured, and each of these applications can run with its own security identity. The number of concurrent isolated applications is a function of system resources. IIS 6.0 can easily have tens of thousands of configured applications per server when applications are configured to execute in a shared application pool.

Note

Preliminary testing of startup times for 20,000 sites has shown that startup takes less than 2 minutes on a two-processor server.


An additional scalability improvement in the new IIS 6.0 architecture is that IIS can listen for requests from a large number of sites without having any worker processes running. (See "New Request Processing Architecture" earlier in this chapter.) Coupling this demand-start feature with the ability to aggressively idle worker processes means that a Web server hosting many sites can be scaled further. This is because IIS 6.0 tunes its resource use to the sites that are actually active. IIS 6.0 will also dynamically trim kernel cached items for these inactive sites.


   
Top


Introducing Microsoft Windows Server 2003
Introducing Microsoft Windows Server(TM) 2003
ISBN: 0735615705
EAN: 2147483647
Year: 2005
Pages: 153

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net