« Previous Next »

Thread: Please help troubleshoot high CPU in classic ASP

Last post 06-10-2009 6:50 AM by lextm. 1 replies.

Average Rating Rate It (5)

RSS

Page 1 of 1 (2 items)

Sort Posts:

  • 06-09-2009, 5:56 PM

    Please help troubleshoot high CPU in classic ASP

    My server is quad-proc, for whatever reason only 1 CPU is used to process ASP page. I see 100 CPU utilization on 1 processor and others are idle.

    I run DebugDiag and it come up with

    Detected possible blocking or leaked critical section at 0x03391ef4 owned by thread 74 in dllhost.exe__IIS Out-Of-Process Pooled Applications__PID__4132__Date__06_09_2009__Time_01_03_50PM__953__Manual Dump.dmp

    Impact of this lock

    78.57% of threads blocked

    (Threads 16 17 18 19 20 21 22 23 24 25 26 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118)

    The following functions are trying to enter this critical section
    ASP!CHitObj::ViperAsyncCallback+11c

    The following module(s) are involved with this critical section
    C:\WINNT\system32\inetsrv\ASP.DLL from Microsoft Corporation

    Stack for thread 74 is below

     

    Thread 74 - System ID 3664

    Entry point   comsvcs!STAThread::STAThreadWorker
    Create time   6/8/2009 3:18:01 PM
    Time spent in user mode   0 Days 00:02:27.375
    Time spent in kernel mode   0 Days 00:01:38.421


    Function   Source
    vbscript!rtConcatBstr+51   
    vbscript!VbsVarConcat+76   
    vbscript!CScriptRuntime::Run+1795   
    vbscript!CScriptEntryPoint::Call+5c   
    vbscript!CScriptRuntime::Run+1f08   
    vbscript!CScriptEntryPoint::Call+5c   
    vbscript!CScriptRuntime::Run+1f08   
    vbscript!CScriptEntryPoint::Call+5c   
    vbscript!CSession::Execute+b4   
    vbscript!COleScript::ExecutePendingScripts+13e   
    vbscript!COleScript::SetScriptState+150   
    ASP!CActiveScriptEngine::TryCall+15   
    ASP!CActiveScriptEngine::Call+4d   
    ASP!CallScriptFunctionOfEngine+48   
    ASP!ExecuteRequest+19e   
    ASP!Execute+17e   
    ASP!CHitObj::ViperAsyncCallback+452   
    ASP!CViperAsyncRequest::OnCall+3f   
    comsvcs!STAActivityWorkHelper+a   
    OLE32!EnterForCallback+6a   
    OLE32!SwitchForCallback+12f   
    OLE32!PerformCallback+50   
    OLE32!CObjectContext::InternalContextCallback+10d   
    OLE32!CObjectContext::DoCallback+1a   
    comsvcs!STAActivityWork::DoWork+75   
    comsvcs!STAThread::STAThreadWorker+423   
    KERNEL32!BaseThreadStart+52   


    ASP request executing on thread   74
    GET request for   /MC/PTB/V7/Agent/myMain.asp
    Request alive for   00:01:34
    QueryString   Mode
    Request mapped to   D:\M\MC\PTB\V7\AGENT\MYMAIN.ASP
    ASP Application   /LM/W3SVC/1/Root
    ASP Template   D:\M\MC\PTB\V7\AGENT\MYMAIN.ASP

    Function Scope   Line Of Code   Source File   Line Number
    AddBase64Chars   strOutput = strOutput & Mid( strAlphabet, iChar + 1, 1 )   D:\MVS\MC\PTB\BASE64.ASP   25
    Base64Encode   AddBase64Chars strOutput, accum, cAccumulated   D:\MVS\MC\PTB\BASE64.ASP   51
    Global Scope   Base64Encode ssv_policyXML, ssv_EncodedXML  D:\M\MC\PTB\V7\AGENT\MYMAIN.ASP   884

    2 issues:

    1. Why would requests be serialized to single thread?

    2. What is causing this high CPU utilization. Source code for Base64 is below?

     

    Thanks,

    G

     <%
    '//////////////////////////////////////////////////////////////
    '// Base64 Encode function
    '//

    Function AddBase64Chars( ByRef strOutput, ByVal accum, ByVal cAccumulated )
        ' The Base64 alphabet lookup table
        Dim strAlphabet
        strAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
                      "abcdefghijklmnopqrstuvwxyz" & _
                      "0123456789+/"

        Dim i, cToOutput

        ' Output characters is always input characters plus one
        cToOutput = cAccumulated + 1

        For i = 1 To cToOutput
            ' Extract 6 bits of the accumulator at the appropriate position
            Dim iChar
            iChar = (accum \ (64 ^ (4 - i))) And 63

            ' Add Base64 character to output
            strOutput = strOutput & Mid( strAlphabet, iChar + 1, 1 )
        Next
        ' Add padding
        For i = 1 To 4 - cToOutput
            strOutput = strOutput & "="
        Next
    End function

    Function Base64Encode( ByVal strInput, ByRef strOutput )

        strOutput = ""

        Dim i
        Dim accum, cAccumulated
        accum = 0
        cAccumulated = 0
        For i = 1 To LenB( strInput )
            ' Shift ASCII of input character up appropriate # of places and OR
            '  into the accumulator
            Dim ch
            ch = AscB( MidB( strInput, i, 1 ) )
            ch = ch * (256 ^ (2 - cAccumulated))
            accum = accum Or ch
            cAccumulated = cAccumulated + 1

            If cAccumulated = 3 Then
                AddBase64Chars strOutput, accum, cAccumulated
                cAccumulated = 0
                accum = 0
            End If
        Next
        If cAccumulated > 0 Then
            AddBase64Chars strOutput, accum, cAccumulated
        End If

    End function
    %>

     

  • 06-10-2009, 6:50 AM In reply to

    • lextm
    • Top 10 Contributor
    • Joined on 10-22-2008, 4:18 AM
    • Shanghai, PRC
    • Posts 1,379

    Re: Please help troubleshoot high CPU in classic ASP

    DebugDiag did find something useful in the dump, but it cannot tell you the whole story.

    I think you need to manually analyze the dump to gain more insights of the problem. Or if you need assistance, you can open a case via http://support.microsoft.com

    Lex Li
    Support Engineer at Microsoft
    ---------------------------
    This posting is provided "AS IS" with no warranties, and confers no rights.
Page 1 of 1 (2 items)
Microsoft Communities