NodeJS 应用程序的所有请求的 CPU 使用率都达到 100%

Moh*_*waj 2 node.js express pm2

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

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

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

jfr*_*d00 6

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

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

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