2017-04-05 10 views
1

状況は次のとおりです。Node.Js - 1 cpuの複数のワーカー? (クラスター)

私はnode.jsサーバーのスクリプトが完了するまでにかなり時間がかかります。 スクリプトはIDを取得していて、このIDに属する画像をデータベースで検索し、画像をキャッシュし、すべての画像がキャッシュされると終了します。

今問題は、この機能を使用して同時に2人以上の人がいる可能性があることです。そして、これらの画像をすべて取得しようとする複数の人がいれば、画像は互いに結合され、人物Aは人物A + Bの画像を取得し、人物BもA + Bの画像を取得する。

今、私は労働者が1CPUを必要としていることを知っています。私はこれを編集して、1つのCPUで複数のワーカーを持つことができます。しかし、CPU使用率が本当に高いときには、それらは作業者から切り替えるだけです。 私は、誰かがすでにこのイメージを取得するのに忙しいときに作業者を切り替えたい、そして他の誰かが自分のイメージを取得しようとしています。 (人によって異なります)

どうすればいいですか?クラスタは、CPU使用率が高い場合にのみワーカーを切り替えます。それとも私はこれを間違って理解しましたか?

答えて

0

クラスタリングは行われません。

あなたが他のコアはほとんど何もしている間に一方のコアが100%ビジー状態である状況を避けるために、クラスタを使用する - このように:

あなたが不適切にあなたのコード内での同時要求を処理に問題があり、クラスタリングはそれを解決しません。あなたが1000人の労働者のクラスターを持っていても、1001の要求を得て、すべての賭けが外されている状況が存在する可能性があります。

ノードを使用すると、クラスタリングを追加するなどの単純なソリューションを使用して問題を解決できないため、常に並行性を考慮する必要があります。

あなたは一行のコードを表示していないので、間違ったことを教えてもらえませんが、不適切なリクエスト処理には明らかに問題があります。多分あなたはグローバル変数を使うでしょうか?たぶん間違った範囲にいくつかの状態を保存しますか?あなたが記述する状況は、どのNodeアプリケーションでも起こるべきではなく、あなたが求めている解決策はとにかく解決しないでしょう。コードを修正する必要があります。

関連する問題