我有一个使用嵌入式火鸟的应用程序。IIS 中有五个此应用程序的实例都在同一个应用程序池中。
每当池中的一个站点停止或回收时,其他四个站点都会有一个线程,每个线程都将 100% 的 CPU 用于其运行的核心(我不知道它是否是现有线程的新线程跳到 100%) 。所以有四个线程使用 100% 的四核 CPU。
我一直在使用 Process Explorer 来尝试了解更多信息。线程都有一个调用堆栈,看起来大多像这样:
ntoskrnl.exe!KiCpuId+0xb6
ntoskrnl.exe!KeWaitForMutexObject+0x13c0
ntoskrnl.exe!KeUpdateRunTime+0x51
ntdll.dll!NtWaitForSingleObject+0xa
KERNELBASE.dll!WaitForSingleObjectEx+0x9a
fbembed.dll!BLOB_edit+0x3430c
fbembed.dll!BLOB_edit+0x1faa6c
fbembed.dll!BLOB_edit+0x1fb5f9
fbembed.dll!isc_dsql_execute_immediate+0x1c1
MSVCR80.dll!endthreadex+0x47
MSVCR80.dll!endthreadex+0x104
KERNEL32.DLL!BaseThreadInitThunk+0x1a
ntdll.dll!RtlUserThreadStart+0x21
这是在 IIS7 和 IIS8 中运行的,.NET 框架版本是 2.0