node.js - Node.exe 卡在 100% CPU

标签 node.js express iisnode iis-10

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

这是资源通常的样子:

My normal running processes

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

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

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

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

我很感激任何见解!

最佳答案

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

我用了Microsoft Safety Scanner .

Microsoft Safety Scanner 发现了一个威胁(检测到威胁:MonitoringTool:Win32/MicTrayDebugger)并删除了(找到了 MonitoringTool:Win32/MicTrayDebugger 并删除了!),它修复了我。但我不确定:)

如果运行 Microsoft Safety Scanner,日志文件路径 C:\Windows\debug\msert.log

关于node.js - Node.exe 卡在 100% CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469054/

相关文章:

javascript - fs 调用与副作用排序?

javascript - 在 Ubuntu Zesty 17.04 上安装 Node 6.9

javascript - 将 JSON 对象推送到 Mongoose 数组中

node.js - 无法让express.js与IISNode一起工作

javascript - Node - 如何在 path.join 中使用变量?

node.js - Cassandra 当前时间戳与 Node.js

node.js - 手动更改路由后 mediator.user 丢失

node.js - 在 Azure Web App 上的 iisnode 上运行 Next.js 时出现问题

node.js - CORS 和 HTTPS 重定向的 Access-Control-Allow-Origin 问题(IIS/IISNode/NodeJS)

node.js - 解决代理错误(Node.js 服务器)