Physical Memory on an IIS Server

A server running Internet Information Server should have sufficient physical memory to keep the following items in physical memory:

Program code for IIS services. This code occupies only 400K even with HTTP, FTP, and Gopher running simultaneously. This code is part of the working set of the Internet Information Server process, Inetinfo.exe, and can be paged to disk.

Frequently accessed Web page files. The number and size of these files varies widely with the installation. These files are stored in the file system cache, an area of physical memory reserved for frequently and repeatedly used pages. The remaining files are stored on disk until needed.

Frequently used objects. These are objects that are costly to retrieve and are frequently reused by the service, such as file handles, file directory listings, and parsed Internet Database Connector queries and their results. These objects are stored in the IIS Object Cache, a cache maintained by the IIS service. The IIS Object Cache is also part of the working set of the Internet Information Server process, Inetinfo.exe, and can be paged to disk.

IIS Log buffers. When IIS Logging is enabled, Internet Information Server maintains two buffers in which it accumulates log data in ANSI characters before it writes the data to disk. By default, each buffer is 64K. These buffers are part of the working set of the Internet Information Server process. Logged data also appears in the file system cache because data is cached when the buffer contents are written to disk.

TCB Table. TCP maintains a hash table of transmission control blocks (TCBs) to store data for each TCP connection. A control block is attached to the table for each active connection. The control block is deleted shortly after the connection is closed. The TCB table is part of the operating system's nonpaged memory pool. As such, the TCB table must remain in physical memory; it cannot be paged to disk.

HTTP Connection data structures. HTTP maintains pageable data structures to track its active connections. When these data structures are in physical memory, they are counted as part of the working set of the Internet Information Server process.

Pool threads. The threads that execute the code for the services are stored in the nonpaged pool in physical memory, along with other objects used by the operating system to support Internet Information Server and for other uses. Threads must remain in physical memory; they cannot be paged to disk.

You can measure your server's physical memory and measure the proportion of physical memory used directly or indirectly by Internet Information Server. You can also log the data over time to identify patterns of memory use.