20個の製品を返すGetProductsメソッドがあります。各製品は作成にかなりの時間がかかります(多くの場所から多くのリソースがあります)。.NETで時間のかかるオブジェクトを作成するための操作が1つ多いスレッド
スレッドプールキューを使用して20種類のスレッドをスピンアップして、各製品の作成を処理することをお勧めしますか?
これは、負荷の大きいサーバを壊しますか?私のアプリケーションは負荷が高いという危険性があります。
実際にこのようなことが実装されているため、負荷テストを行っている間にサーバが正常に動作しなくなり、正常に動作するように完全に再起動する必要があります。
紛失している方法がありますか?私はそれを完全に間違っているのですか?私は同期処理に固執すべきですか?
注:私の負荷テストを行う場合は、サーバのメモリがはるかに道を使用していた、そして時には、エラーが(メモリ不足サーバー)を投げました。ガベージコレクタは十分速く動作していませんか?
また、私の製品はコマースサーバーから読み込まれていますが、製品に添付する必要があるリソース(イメージ、ドキュメント、レビューなど)がたくさんあります。
また、私のアーキテクチャは、Webフロントエンドが完全にwcfサービス(スレッドを実行する)に座っている2段階の設定です。 wcf層は不自由なものです。サーバは8コアサーバ上で仮想的で、gbのRAMが割り当てられています。
パーソナルノート私はマルチセディングを悪用していると感じています。 "GetProducts"の呼び出しは非同期でなければなりませんが、 "GetProducts"は20の非同期操作を行う必要はありません。
詳細情報が必要です。製品がDBからロードされているか(適切なインデックス、ビューを使用する場合)、Webサービス、ファイル、など... –
あなたはCPUにバインドされていますか?またはディスクバインド?またはネットワーク接続? –
いくつかの質問:1)いくつの製品を合計して扱っていますか?2)20の代わりに1つの製品を作成する場合は、どれくらいかかりますか? 3)製品はどのくらいの頻度で変更されますか? – Todd