Назад | Перейти на главную страницу

Потоки IIS, работающие с загрузкой 20% бесконечно на Kernel32.GetModuleA

У нас есть недавнее развертывание веб-приложения на 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 ... они могут выполнять большую работу или ждать некоторого сетевого трафика.

Дэйв