2017-10-11 13 views
0

私はExpressに構築されたNodeJSアプリケーションを持っています。私はpm2を使ってアプリを稼動させています。アプリがハングアップする、つまりページが読み込まれているだけの場合もあります。 SSHを使用してサーバーに接続しようとすると、それもハングしてプロンプトや何も表示されません。しばらくすると(約1〜2分後)、アプリは正常に動作し始め、ターミナルのSSHを使用してサーバーに接続することもできます。NodeJSアプリのCPU使用率がすべてのリクエストで100%になる

CPU使用率が急上昇しているかどうかを確認するには、pm2プロセスをkeymetrics.ioと接続してください。ここでは、すべてのリクエスト(単純なログインページであっても)で、CPU使用率グラフが100%に達した後、正常に戻ります。

これはアプリをハングしませんが、これが通常の動作であれば混乱していますが、そうでない場合は何が原因でしょうか?このアプリは、ユーザーの視点からは通常遅くはありません。

+0

あなたのコードを見ることなく誰かがこれが正常かどうかを知る方法は本当にありません。 – jfriend00

+0

@ jfriend00すべてのリクエストがCPUグラフを100%瞬間的にヒットさせるのは、誰もが(nodejsアプリのモニタリングなどの経験が豊富な)起こった場合です。 –

+0

@MohitBhardwajあなたはさらに調査する必要があります。JavaScriptが動作しているかどうかに関わらず、サーバが1〜2分間ロックアップされるのは普通ではありません。何かがすべてのコアをブロックしてシステムをフリーズしています –

答えて

1

これは正常です。 Javascriptが実行されている正確な時点で、CPUは100%占有されています。それは正常で予想通りです。どの瞬間でも、CPUは100%稼働しているか、まったく稼働していません。間には存在しません。 50%が表示されている場合、時間の半分は100%、半分は0%になるという、ある期間の移動平均です。だから、手術の問題は、CPUがどれくらいの期間、どれくらいの期間だったかということです。数ミリ秒だったら、それは何もありません。それが数分であった場合、それはおそらく問題です。

ほとんどのモニタリングツールでは、瞬間的なバーストが100%にならないように移動平均が表示されますが、モニタリングツールで100%の瞬時バーストが表示されている場合は完全に正常です。実際のJavascriptが動作している瞬間です。

CPUを100%の時間(分など)で100%見た場合、その時間中にサーバーが他の要求に応答していない可能性があるため、おそらく調査するための問題が発生している可能性があります。しかし、100%の瞬間的で短いスパイクは正常です。

+0

ありがとうございました。それはまさに私が知りたかったものです。同僚は、アプリケーションが50%以上のCPU使用率に達することはないと言ってくれました。だから私はあなたが時間の経過と共に平均を示す上記のような別の監視ツールを使用していると思います。私のサーバーはマルチコアだったのですが、私のサーバーはシングルコアなので、これも可能でしょうか? –

+1

@MohitBhardwaj - node.jsは、すべてのJavascriptを単一のコアで実行するので、通常は複数のコアを持つことに大きな違いはありません。しかし、それは再び監視ツールとそれがどのように表示されるかによって異なります。 4コアのCPUと1つのCPUが100%占有されている場合、監視ツールは、3つの他のコアが何もしていないため、25%の全体的な使用率を表示することがあります。 node.jsの主な問題は、応答時間の短いサーバーを作成する可能性があるため、CPUを長期間使用するnode.jsコードを書きたくないということです。しかし、100%の短いバーストは正常です。 – jfriend00

+0

ありがとうもう一度:)私は本当に混乱し、あなたの説明は多くの助けとなりました。 –

関連する問題