Node.exe 卡在 100% CPU

Chr*_*isK 5 node.js express iisnode iis-10

我有一个 ExpressJS node.js 应用程序在 Windows Server 2016 VM 上的 IISNode 上运行,具有 4 个内核和 32GB 内存。我可以为每个内核设置一个进程,因此我的应用程序正在运行 4 个 node.exe。节点版本为 v6.10.3。

这是资源通常的样子:

我的正常运行进程

我可以看到由于内存波动,节点垃圾收集似乎正在发生。如屏幕截图所示,它通常会在峰值工作下方悬停。

但是,我试图找出这些进程之一的 CPU 利用率飙升至 100% 的原因。每当发生这种情况时,我都会被迫终止 node.exe,因为我的整个应用程序都停止了。它将停滞在 CPU 峰值,然后所有进一步的请求都在旋转。

  1. 什么会导致 node.exe 中 CPU 使用率高,如何将其锁定为 100%?这是由于垃圾收集停滞吗?
  2. 可以使用哪些工具来找出停顿的 node.exe 以更好地调试我的应用程序?
  3. IISNode 是否应该作为负载平衡器工作并将所有请求委托给另一个核心?

现在我被迫在计时器上回收我的应用程序池以完全终止所有工作节点进程并重新启动它们。这可以抑制应用程序长时间停机。

我很欣赏任何见解!

Mec*_*rci 2

我在 Windows 10 中遇到了同样的问题。打开任务管理器 > 进程 Nodejs:服务器端 JavaScript(32 位)正在使用 %70 CPU。我找到那篇文章了。

我使用了微软安全扫描程序

Microsoft 安全扫描程序发现威胁(检测到威胁:MonitoringTool:Win32/MicTrayDebugger)并删除(找到MonitoringTool:Win32/MicTrayDebugger 并删除!),它为我修复了。但我不确定:)

如果运行 Microsoft 安全扫描程序,日志文件路径 C:\Windows\debug\msert.log