Microsoft KB Archive/253603

{|
 * width="100%"|

HOWTO: Troubleshoot a High-CPU-Utilization "Hang" in Internet Information Services

 * }

Q253603

-

The information in this article applies to:


 * Microsoft Internet Information Services version 5.0
 * Microsoft Internet Information Server 4.0

-

SUMMARY
When Internet Information Server (IIS) stops responding to incoming requests and does not serve Web pages because of excessive CPU utilization, then you (or your customers) are experiencing a 100-percent (or high) CPU utilization "hang." In some cases, this failure to respond is accompanied by a high level of hard disk activity, but this is not always the case.

This article describes how to capture a relevant log file of the IIS process as well as a Performance Monitor log that you can use to compare with the process dump to help isolate the problem. Once you have completed the steps in this article, contact your Microsoft Support Professional to analyze the results and complete the troubleshooting process.

If you do not have IIS Exception Monitor installed on your computer, please see the following Web page to install it:

"http://msdn.microsoft.com/workshop/server/iis/ixcptmon.asp" NOTE: Please see the "References" section of this article for information on troubleshooting suspended execution failure in IIS.

Verify the Process that Is Using the CPU
To ensure that you troubleshoot the correct issue, you must first use Task Manager to check the utilization of the CPU:


 * 1) Click the Process tab in Task Manager, and then click the CPU column header to sort the list based on CPU utilization.
 * 2) Verify that Inetinfo is the process that is using the CPU. If it is not, modify the following steps (or they may not work at all; see notes in the steps).

Before the condition occurs:


 * 1) Open Performance Monitor and set up a log file that can capture both the Process and Thread objects. Do not start the log yet. For help using Performance Monitor to create log files, see the following Microsoft Knowledge Base article:
 * 2) Start your Web server.

Once your users report the failure to respond or you observe high CPU activity:

 Start the log file capture in Performance Monitor. Wait 60 seconds, and then proceed to the next step. Determine the process ID of the process that is not responding and then manually create a user dump of that process. To do so, execute: userdump process id.dmp file name. Stop the Performance Monitor log and save it. (Optional) Compress the files created in steps 2 through 4 using a compression utility. Send these files, and any relevant codeview .pdb symbol files (see "Symbol Files" later in this section), to your Microsoft Support Professional via FTP. Please see the following Web page for information on transferring files via FTP:  Send e-mail to your Microsoft Support Professional with the information that you collect with the help of the following Web page: "http://support.microsoft.com/support/dna/bundles/probisol/default.asp" Be sure to include in the information a list of any hotfixes that you have installed. 

Symbol Files
Symbol files are data files that contain information that makes debug logs easier to read and work with. They translate memory addresses into friendly functions and variable names and provide other information for the debugger.

The Microsoft Support Professional who help you analyze your userdump logs will need to know the specific versions of Windows NT, Windows NT Service Packs, IIS, and any hot fixes installed on the server. It may also help if you run the Windows NT Diagnostics and save the report to a file to send to the Microsoft Support Professional.

Note that the Microsoft Support Professional may ask you to submit codeview .pdb files for your .dll files or other components that you have created. To generate codeview .pdb symbol files, use the following instructions:

Visual Basic


 * 1) In Visual Basic 5.0 or 6.0, open the Visual Basic project that you want to build symbols for.
 * 2) From the File menu, choose Make YourProject.exe.
 * 3) Click Options, and then select the Compile tab.
 * 4) Select Compile to Native Code and Create Symbolic Debug Info.
 * 5) Click OK, and then click OK again to compile your component.
 * 6) Rebuild your component. You will then have .pdb symbol files.

Visual C/C++

In Visual C++, open the Visual C++ project that you want to build symbols for.

Select Settings from the Project menu.

Click the Link tab.

Select General from the Category list box.

Select Generate debug info.

Select Debug from the Category list box and select the following items:


 * Debug info (both formats)
 * Separate types

Rebuild your project. You will then have .pdb codeview symbol files.

NOTE: You do not have to install symbol files on your computer. They are benign and do not affect performance or operation, but they do require a large amount of disk space and can be difficult to install.