2

私はnodejsで作成されたbeanstalkappワーカーを持っています。それは、サイトのすべてのことを行うPHPアプリケーションがあり、エラー、問題、通知、またはそれがbeanstalkappに追加されるものがある場合です。その後、nodejs はほぼ常に beanstalkapp をチェックしてメッセージを処理し、それらに対して何らかの処理を実行する必要があります (誰かにメールを送信する、ログに追加する、どこかに投稿する)。

私の質問は、この悪いパフォーマンスは賢明ですか、それともこれを行うためのより良い方法はありますか? setInterval はプロセスを終了させないため、悪いと思いますか?

4

1 に答える 1

9

それはあなたの時間に依存しますsetInterval。JavaScript インタープリターは、イベント間でスリープします。したがって、 s とsetIntervals の間では、node.js アプリは CPU 時間をゼロ (またはほぼゼロ) で消費します。

そのため、システム全体でアプリが発生する負荷は、起動の頻度によって異なりsetIntervalます。1 秒に 1 回の場合、CPU はほとんど消費されません。一方、1 ミリ秒ごとに 1 回 (setInterval 時間を 1 または 0 で呼び出す) と、特にリソースに制約のあるマシンまたは VM で実行している場合は、システムが停止する可能性があります。

私の経験では、適切な妥協点は約 50 または 100 ミリ秒 (1 秒あたり 20 または 10 回) です。リアルタイム アプリケーションにも十分な応答性があり (人間の知覚は 20 Hz よりもはるかに遅いため)、システムの残りの部分にほとんど影響を与えないほど十分な長さです。

于 2012-10-10T01:44:14.197 に答える