对于所有请求,NodeJS 应用的 CPU 使用百分比变为 100%

NodeJS app's CPU usage percentage goes to 100% for all requests

我有一个基于 Express 构建的 NodeJS 应用程序。我使用 pm2 来保持应用 运行。有时,应用程序会挂起,即页面一直在加载。如果我尝试使用 SSH 连接到服务器,那么它也会挂起并且不显示任何提示或任何内容。一段时间后(大约 1-2 分钟),应用程序启动 运行 正常,我也可以在终端中使用 SSH 连接到服务器。

为了查看是否是因为 CPU 使用量激增,我将我的 pm2 进程与 keymetrics.io 连接起来。在这里,我注意到在每次请求时(即使是简单的登录页面),CPU 使用率图表都达到 100%,然后恢复正常。

它不会挂起应用程序,但我很困惑这是否是正常行为,如果不是,那么这可能是什么原因?从用户的角度来看,该应用程序通常并不慢。

嗯,是的,这很正常。在任何 Javascript 为 运行 的确切时刻,CPU 被 100% 占用。这是正常的,也是意料之中的。在任何给定时刻,CPU 要么是 运行 100%,要么根本不是 运行。没有中间。当您看到 50% 时,这只是某个时间段内的移动平均值,其中一半时间为 100%,一半时间为 0%。因此,操作性问题是 CPU 达到 100% 的时间有多长。如果是几毫秒,那没什么。如果是几分钟,那可能是个问题。

大多数监控工具会随着时间的推移向您显示更多的移动平均线,因此您看不到 100% 的瞬时爆发,但如果您的监控工具显示的是 100% 的瞬时爆发,那么这是完全正常的.那是实际 Javascript 是 运行.

的时刻

如果您看到 CPU 在一段有意义的时间(例如几分钟)内处于 100%,那么这可能表示需要调查的问题,因为在此期间您的服务器可能没有响应其他要求。但是,出现 100% 的瞬间短峰值是正常的。