У нас есть недавнее развертывание веб-приложения на Windows Server 2003 / IIS. Несколько раз в день запускается поток, который будет работать с загрузкой 20-25%. Используя проводник процессов, я вижу стек, который размещен внизу этого сообщения. Я могу убить эти потоки, и это ни на что не влияет. Однако каждый день мне приходится наблюдать за веб-сервером и убивать их по мере их возникновения, иначе приложение замедляется до ползания.
Мне нужен способ устранить это и определить источник проблемы. Любые идеи?
ntkrnlpa.exe + 0x8db2e ntkrnlpa.exe + 0x29a82 ntkrnlpa.exe + 0x331a4 ntkrnlpa.exe + 0x2e3c6 ntkrnlpa.exe + 0xf6299 ntkrnlpa.exe + 0xeede2cf6299 ntkrnlpa.exe + 0xeede2ccf.dll ntkrnlpa.exe + 0xeede2ccf.dll + 0xeede2.exe ! DllUnregisterServer + 0x652 OLEAUT32.dll! DispCallFunc + 0xab OLEAUT32.dll! SafeArrayCopyData + 0x397 AppSvr.dll! DllGetClassObject + 0xab8 OLEAUT32.dll! DllRegisterServer + 0xab8 OLEAUT32.dll! DllRegisterServer + 0xab8OLEAUT32.dll! DllRegisterServer! DispGetParam + 0x5b6 ole32.dll! StgGetIFillLockBytesOnFile + 0x13d32 ole32.dll! StgGetIFillLockBytesOnFile + 0x13cdf ole32.dll! DcomChannelSetHResult + 0xaab ole32.dll! DcomChannelSetHResult + 0x495 ole32.dll! StgGetIFillLockBytesOnFile + 0x13fbe ole32.dll! StgGetIFillLockBytesOnFile + 0x13a7d ole32.dll! StgGetIFillLockBytesOnFile + 0x12f64 ole32.dll! CoFreeUnusedLibrariesEx + 0x9f5 ole32.dll! CoFreeUnusedLibrariesEx + 0x165 ole32.dll! CoRegisterChannelHook + 0x538 kernel32.dll! GetModuleHandleA + 0xdf
Это стек ваших убитых потоков? Что странно в стеке, так это эти два вызова: AppSvr.dll! DllUnregisterServer + 0x652 OLEAUT32.dll! DllRegisterServer + 0x5bf
Почему ваше приложение регистрирует или отменяет регистрацию COM-объектов во время выполнения?
если AppSrv.dll - это код вашего приложения, я бы проверил функции DllUnregisterServer и DllRegisterServer, чтобы убедиться, что они не слишком много работают (это может привести к зависанию процесса или возникновению длинного цикла).
Другой API, на котором нужно сосредоточиться, - это вызовы WS2_32.dll! Recv + 0x6f ... они могут выполнять большую работу или ждать некоторого сетевого трафика.
Дэйв