2017-10-11 778 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

再次感謝:)我真的很困惑,你的解釋幫助了很多。 –

相關問題