2

毎週、データベースを介して非常に大量のリクエストを同時に行うアプリケーションを構築しています。

データベースを同時にクエリするスレッドは15〜20個あります。

私たちは実際に多くの問題に直面しています:

データベース側(RAMが不足しています):解決中です。

しかし、クライアントでも。接続を取得しようとしたり、コマンドを実行しようとしたりすると、例外が発生します。これらのコマンドは、エンティティフレームワークを介して作成されます。

アプリケーションには2つの部分があります。1つはWebサイトで、もう1つはコンソールアプリケーションです。

では、次の値を増やす方法を教えてもらえますか?

  • 接続タイムアウト
  • コマンドタイムアウト
  • 接続プールのサイズ

サーバー側(SQL ServerまたはIIS)で実行する必要があることがいくつかあると思いますが、どこにあるのかわかりませんか?

4

2 に答える 2

3

コマンドタイムアウトはインスタンスで設定できObjectContextます。接続タイムアウトと接続プールサイズは接続文字列で構成されますが、スレッドが15〜20しかない場合は、デフォルトの接続プールサイズが100であるため、問題はおそらく別の場所にあります。

于 2012-11-21T13:58:18.743 に答える
2

objectContextをusingブロックで囲み、作業が完了した後にコンテキストが破棄されるようにします。

エンティティコンテキストを使用して必要な作業を実行し、作業の終了後に接続を破棄するスレッドを渡すメソッドを作成できます。stateinfoオブジェクト変数を使用して、さまざまなパラメーターを渡して、の存続期間中に使用できます。方法。

void DoContextWork(object stateInfo)
    {

    // wrap your context in a using clause
    using(var objectContext = new YourEntity()
       {
           // Do work here
       }

    }

複数のスレッドにこのメソッドを呼び出させることができ、接続が呼び出されるたびに、上記の問題が発生することなくDBで作業を行うことができます。

于 2013-02-14T12:18:28.027 に答える