7

このアーキテクチャには 2 つのノード プロセスがあります。

1 つはプライベート API をポーリングし、変更があれば 2 番目のノードにプッシュします。2 番目のノードはデータを処理し、多数の他の API を呼び出し、最終的に、socket.io を使用して HTML5 Web サイトであるクライアントに変更イベントを発行します。

この 2 番目のノードは常にデータを処理し、クライアントが接続されていなくても常に変更を発行します。したがって、私の意見では、CPU またはメモリの使用率は、接続されているクライアントの数に大きく影響されません。また、このアーキテクチャはまだプライベート ステージング環境で実行されていることにも注意してください。

すべてが正常に動作し、数日後、おそらく 1 週間後、最初のノードがまだ正常であるにもかかわらず、2 番目のノードが突然非常に遅くなることに気付くまで、ライブに移行する準備ができています。

2 つのノード間の接続でさえタイムアウトになり、localhost を介して同じネットワーク上にあるほどひどい状態になります。また、socket.io/socket.io.js ファイルを参照するのに 10 秒以上かかります。

コードを見ずに問題を理解するのは非常に難しいことはわかっていますが、数日後にライブに移行する必要があり、ログに何も明らかにされておらず、Google も役に立たないため、ちょっと頭を悩ませています。

構築するための良い習慣は何ですか?このようなことを経験したことがありますか? 何が問題で、どのように修正しましたか?

node.js の適切なモニターとプロファイラーは何ですか? (できれば無料)

多くの発信 API 呼び出しを行う node.js アプリを構築するための良い方法は何ですか?

実際の問題を解決したり発見したりする正しい方向に私を助けることができる何かまたは誰でも大歓迎です!

ありがとうございました!

4

2 に答える 2

4

このようなことは経験したことがありませんが、2 番目のノードが CPU を集中的に使用する作業を行ったり、何らかのリソースを同期的に待機したりして、イベント ループをブロックしている可能性があります。

コードにログを追加して、最初のノードによってプッシュされた各変更の処理に 2 番目のノードがかかる時間を確認します。ある種の変更が完了するまでに 10 秒ほど CPU を消費する可能性があります。

また、メモリ、CPU、およびネットワーク接続の監視を開始する必要があります。物事が遅くなると、監視によってボトルネックがどこにあるかの手がかりが得られます。

監視のために、次の 3 つのツールを試すことができます

  1. ノードタイム
  2. ハチドリ
  3. ノードモニター

http://nodetime.com/blog/monitoring-nodejs-application-performanceもお読みください

于 2012-10-08T21:04:37.427 に答える
1

2 番目のノードのどこかでメモリ リークが発生しているようです。おそらく、匿名関数の呼び出しが多すぎるためです。実行中に RAM の使用量がわずかに増加していることに気付きましたか?

于 2012-10-08T19:26:38.213 に答える