Microsoft KB Archive/258833

= How To Troubleshoot High CPU Utilization of an MTS or COM+ Process =

Article ID: 258833

Article Last Modified on 7/13/2004

-

APPLIES TO


 * Microsoft Transaction Services 2.0, when used with:
 * Microsoft Windows NT 4.0
 * Microsoft COM+ 1.0

-



This article was previously published under Q258833



SUMMARY
When a Microsoft Transaction Server (Mtx.exe) or COM+ (Dllhost.exe) process displays high CPU utilization in Perfmon, and the CPU Usage rises to 100%, this article can help you capture a process dump and a Performance Monitor log, which you can use to compare with the process dump, to help isolate the problem. To analyze the dump, you can contact a Microsoft Support Professional or use the WinDbg tool (see the &quot;References&quot; section for more information).



MORE INFORMATION
To capture a process dump and a Performance Monitor log, follow these steps:  On the Start menu, point to Programs, point to Administrative Tools, and then click Performance Monitor. On the toolbar, click the plus (+) button. In the Add To Chart dialog box, select the following items:

Object = Process

Counter = % Processor Time

Counter = ID Process

 From the Instance list, click All processes on the system, click Add, and then click Done. To highlight the process that is consuming the most CPU, on a computer that is running Microsoft Windows NT 4, press the BACKSPACE key once. On a Microsoft Windows 2000-based computer, click the light bulb button on the tool bar. The selected counter appears in white on the graph. Use the arrow keys to find the process that is consuming the most CPU. Note the Process name and Process ID. Press the DELETE key to remove other irrelevant counters from chart. On the Perfmon toolbar, click the plus (+) button. In the Add to Chart dialog box, select the following items:

Object = Thread

Counter = % Processor Time

</li>  From the Instance list, click All the threads for the noted process instances (MTX.exe in Windows NT 4 and Dllhost.exe in Windows 2000), click Add, and then click Done.

This will look like the following: <pre class="fixed_text">- dllhost/0 - dllhost/0#1 - dllhost/1 - dllhost/1#1 ... The number after the '/' is the thread number. The number after the '#' is the process instance number (you might have more than one dllhost). The thread you're looking for should have a process number that is the same as what you found in step 5. </li> Use the arrow keys to find the thread that is consuming the most CPU, and note which instance it is.</li> On the Perfmon toolbar, click the plus (+) button. In the Add to Chart dialog box, select the following items:

Object = Thread

Counter = ID Thread

Instance = The instance of the thread noted in the previous step.

</li> Click Add, and then click Done.</li> Note the last reading for the ID Thread, and exit Perfmon.</li> Install UserDump on the system.</li> At a command prompt, type the following command to change the folder to the Userdump folder:

userdump [noted process ID]

</li></ol>

If you need to consult a Microsoft Support Professional, zip the Userdump and arrange to send it with the following information:
 * Windows NT service pack
 * Microsoft Data Access Components (MDAC) version (if any)
 * Microsoft Distributed Transaction Coordinator (MS DTC) version
 * High CPU Utilization thread ID
 * SQL version and service pack (if any)
 * Oracle version, Client version, and Net Library version (if any)
 * Any additional patch or hotfixes that are currently used
 * Symbol files for your custom or third party components (if any)

<div class="references_section">