2017-10-11 36 views
0

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

要看看它是否是因为穗CPU使用率我连我的PM2过程与keymetrics.io的。在这里,我注意到每次请求(即使是简单的登录页面),CPU使用率图表都会达到100%,然后恢复正常。

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

+0

我实在不明白怎么会有人知道这是否正常与否没有看到你的代码。 – jfriend00

+0

@ jfriend00我的意思是说,如果它发生在每个人身上(即在nodejs应用程序监控等方面更有经验),那么每个请求都会使CPU图形瞬间达到100%。 –

+0

@MohitBhardwaj您应该进一步调查,无论JavaScript是否运行,服务器锁定1-2分钟都不正常。某些内容阻塞了所有内核并冻结了您的系统 –

回答

1

嗯,是的,这是正常的。在任何Javascript正在运行的时刻,CPU被100%占用。这是正常的和预期的。在任何特定时刻,CPU都可以100%运行或者完全不运行。中间没有。当你看到50%时,这只是一段时间内的移动平均值,一半时间为100%,一半时间为0%。所以,操作问题是CPU在100%的时间。如果是几个毫秒,那没什么。如果是几分钟,那可能是一个问题。

大多数监测工具会向您显示更多的移动平均值,因此您不会看到瞬间爆发达到100%,但是如果您的监测工具显示瞬时爆发为100%,则这是非常正常的。那是真正的Javascript运行的那一刻。

如果你看到你以100%的CPU进行有意义的时间量(像分钟),那么这很可能表明一个问题,寻找到,因为在这段时间里你的服务器可能不响应其他请求。但是,瞬息万变的100%是正常的。

+0

非常感谢。这正是我想知道的。一位同事告诉我,应用程序永远不会超过50%的CPU使用率。所以我认为他们会使用一个不同的监控工具,就像你提到的一样,它显示了一段时间的平均值难道这也是因为那里的服务器是多核而我的是单核? –

+1

@MohitBhardwaj - node.js在单个内核中运行所有Javascript,因此通常不会有多重核心的差异。但是,它又依赖于监控工具以及它如何显示事物。如果您有一个4核CPU,并且一个CPU占用了100%,则监视工具可能会显示25%的总体使用率,因为您有三个其他内核无所作为。 node.js的主要问题是,您不想编写长时间占用CPU的node.js代码,因为这可能会导致响应性较差的服务器。但100%的短阵是正常的。 – jfriend00

+0

再次感谢:)我真的很困惑,你的解释帮助了很多。 –