【发布时间】:2020-09-26 11:27:32
【问题描述】:
我创建了一个 nodejs 服务器应用程序,它使用了一些模块,如 ssh2、child_process、puppeteer、ws、sqlite,当这个应用程序运行时,我看到一个带有 message+ 作为用户的“dbus-daemon”进程,这使得 CPU 使用率呈对数上升在几天内到 100% 使整个服务器无响应。
有谁知道为什么 nodejs 会使用这个过程?
在应用程序中,我生成了一些通过message 事件相互通信的子进程。这可能是原因吗?因为 dbus 显然是一个消息系统
我的应用程序本身不会占用 CPU,因为我正在使用 PM2 对其进行监控,并且它始终低于 5%。但是由于某种原因,它使这个 dbus 东西消耗了 cpu
【问题讨论】:
-
嗨,我不擅长这种事情,但出于好奇我发现了这个:dbus.freedesktop.org/doc/dbus-tutorial.html
-
dbus 用于进程间通信。据我所知,导致这种情况的常见问题是进程创建失控:不断创建想要使用 dbus 的新进程。随着 dbus 请求的数量随时间增加,dbus 需要越来越多的 CPU 来处理它们。我想知道您的节点应用程序中是否有某些东西以不受控制的方式创建进程。
-
我每隔几秒就运行一次
fs.open('/proc/' + pid + '/stat')以获得一些实时统计数据。会不会是这个问题? -
之后你会关闭文件吗?
-
没有,哈哈。但 node.js 不应该自动关闭它吗?
标签: javascript node.js server process dbus