Summary (Web and Application Server Infrastructure - Performance and Scalability)

Applies To: Windows Server 2003 with SP1

Windows Server 2003 offers significant gains on performance and scalability, over its predecessor operating systems, when used in Web and application server scenarios. Additionally, Windows Server 2003 has many new features for the configuration, management, and tracing of applications running over the HTTP protocol.

More Information

1 The following resources contain in-depth information about IIS.

For the latest information about Windows Server, see the Windows Server Web site at https://www.microsoft.com/windowsserver2003/default.mspx.

Note

IIS 6.0 is wholly contained and ships as a component of Windows Server 2003. IIS 5.0 is wholly contained and ships as a component of Windows 2000. It is not possible to interchange IIS 5.0 onto Windows Server 2003 or IIS 6.0 onto Windows 2000, as both versions of IIS are tightly integrated into their respective operating system release.

2worker process: all Web application processing, including loading of ISAPI filters and extensions as well as authentication and authorization, is done by a new Web service DLL. This DLL is loaded into one or more host processes called worker processes, or instances of W3wp.exe. For more information about how worker processes interact with IIS 6.0, see the section entitled Worker Process Isolation Mode, following this section.

3application pool: an application pool is a grouping of one or more URLs served by one or more worker processes. An application pool corresponds to one request queue within HTTP.sys and one or more worker processes. An application pool can serve requests for one or more unique Web applications. These applications are assigned to the application pool based on their URL. There can be multiple application pools operating at the same time. For more information about application pools, see the section entitled Worker Process Isolation Mode, following this section.

4 The IIS metabase is an XML file stored at: %SYSTEMROOT%\system32\inetsrv\metabase.xml.

5 8-processor, 900-MHz server (Saber class), 3 gigabit network cards.

6 TTFB/TTFB = Time to first byte/Time to Last byte response time latency from the client perspective.

7 See RFC2616 for a description of HTTP response headers (values, ranges, and purpose.)

8 If possible from a functionality perspective.

9 Test performed on Proliant DL360 2-processor (900-MHz) computer, running Windows Server 2003, Enterprise Edition (build 3700); 1 BCM5701 gigabit Ethernet adapter.

10 Only ASP.NET pages with VaryByParam=none are cached in the kernel.

11 CLR = Common Language Runtime, the underpinning of ASP.NET.

12 This is CPU cycles measured on the physical processor. This number does not relate to the physical number of instructions counted in Microsoft intermediate language (MSIL). This is the resultant processor spins (stalls), cacheline flushes, etc. to get that handful of MSIL instructions executed on a busy system.

13 A low context switch rate is less then 5,000 context switches per second, per processor. So, an 8-processor server with an overall context switch rate of 1,500 context switches per second would qualify as having a low context switch rate.

14 When performance testing the Unisys ES/7000 platform (32 processor slots), the IIS test team frequently used 8 gigabit adapters per one operating system instance (32 processors). In some test cases, the 8 gigabit cards were still the bottleneck.

15 Web browsers and other clients can ask IIS to send back a compressed response by including the Accept-Encoding: gzip, deflate request header in the initial content request.

16 HT stands for Hyper-Threading technology from Intel where a single processor core is represented as 2 virtual processors in the operating system.

17 The HTTP.sys cache will only cache HTTP GET requests that are anonymous. This includes unauthenticated SSL encrypted responses.

18 PAE = Physical Address Extensions. An extended addressing scheme for x86 based systems that allows access to greater than 4 GB of RAM.

19 This location is accurate for the initial release of Windows Server 2003. Microsoft reserves the right to change this location and parameters in future releases or service packs.

20 Bottleneck is CPU.

21 Bottleneck is gigabit network card.

22 IIS will preserve existing per-site log-file settings when the CBL mode is selected, so if you want to revert back, you do not lose any log-file configuration.

23 IIS will fill a 64K log buffer before physically writing it to disk.

24 The registry key HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\LogBufferSize, controls the size of the log buffers allocated by HTTP.sys. When this registry key is not present, HTTP.sys will allocate 64K for each log buffer. When this registry key is present, HTTP.sys will validate and use the size nominated as the log buffer. The valid range is 12K-64K.

25 Windows will reserve large sections of virtual addresses from which to sub-allocate requests, when memory requests come in. This extension doesn't happen on a per-allocation request basis.

26 See: https://msdn.microsoft.com/library/en-us/memory/base/low\_fragmentation\_heap.asp

27 For the purposes of this discussion, a large multiprocessor server refers to a server with more than four physical CPU cores. Note, this is an arbitrary distinction I have made to discuss concepts in this paper. It is not uncommon to consider a large multiprocessor server having greater than 16 CPU cores.

28SMPProcessorAffinityMask is the decimal conversion of the binary number representing the processors to be used. For example, if an administrator wanted to establish affinity between an application pool and processors 4-7 of a multiprocessor server, the binary number representing that would be 1111 0000. Converting this binary number to decimal yields a value of 240. Therefore, the setting for that application pool would be SMPPrcoessorAffinityMask=240.

29 SMP affinity can only be enabled/disabled through manipulation of the SMPAffinitized and SMPProcessorAffinityMask properties in the IIS metabase. These values can be manipulated through direct modification of the XML or by using the adsutil utility.

30 Greater than 5,000 context switches per second, per processor (i.e., more than 40,000 / sec on an 8-processor server) is generally considered a high context switch rate. Note, however, that context switch rates should also be considered on the request throughput at the time of calibration. For example, if a server is processing 50,000 requests / sec, a context switch rate of 40,000 is quite good (less than one per request).

31 Example of tools a developer would use to assess locks at run time would be Microsoft Visual Studio .NET 2003 Analyzer or Intel VTune.

32 An application must be able to be multi-instanced for Web gardens to work.

33 This five-second interval can be configured; it can be overridden by adding the HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Inetinfo\Parameters\FileAttributeCheckThreshold (REG_DWORD) registry key. This value will take effect when a worker process is recycled, so it can be changed in production on the fly.

34 Because the Web service security standard is built out, some of the data items sent across, per method call, will be the large public/private key encryption values and many other SOAP envelope headers.

35 Nagling is where a TCP/IP stack only has a small number of bytes to send, so instead of adding all of the TCP headers to a very small payload, TCP/IP will wait for 200 milliseconds in the hope that the application will give it more data to send. If no more data is passed down, TCP will send the small packet. This phenomenon has a higher probability of occurring in Web service interactions, given the split of the packets.

36 VMWare is an example of an operating system virtualization that consumes significant amounts of system resources on a server, while still maintaining another operating system image.

37 Assuming the two applications did not have a dependency on one another.

38 Excessive is a relative term. Having 50 concurrently-running application pools on a server with 128 MB of physical RAM is excessive; having 50 concurrently-running applications on the exact same server with over 1 GB of RAM, would not be excessive.

39 Cold in this context means a server that has just had IIS initialized, with all the IIS caches empty and no custom components initialized.

40 SMB stands for Server Message Block protocol. This is the standard protocol used by Windows clients and file servers to share files and printers.

41 The Process Gating parameter can be found at the W3SVC\MaxProcesses location in the IIS 6.0 metabase.

42 Given that HTTP.sys does a lot of caching and performs some of the processing for an application, and the CPU use of HTTP.sys is not attributed to an application pool, CPU usage will not be perfect. For example, if an application has affinity to two processors on a 4-processor server and that application is driven as hard as possible, the overall processor utilization will be slightly over 50 percent, given the processing that HTTP.sys does.

43 Only available for Windows Server 2003, Enterprise Edition and Windows Server 2003, Datacenter Edition.

44 Examples include Macromedia ColdFusion, IBM Websphere, and BEA WebLogic. NOTE: At time of writing, third-party vendors had not approved their application environments on Windows Server 2003.