39

私は MS 認定のために勉強していますが、私が行っている模擬試験の 1 つに、StateServer ではなく SQL Server にセッションを保存する際のパフォーマンスが争点であるという質問があります。

アプリが Web ファームで実行されている場合、最高のパフォーマンスを提供するセッション状態のソリューション (SQL Server または StateServer) と、最も重要な理由は何ですか?

4

4 に答える 4

62

State Serverは、セッションデータをメモリ内の辞書に格納するため、より高速です。SQL Serverは、データをディスクに保持するデータベースに格納されているため、速度が低下します。

SQLサーバーも低速です。これは、すべてが1つのテーブルに格納されるため、セッションデータにアクセス/更新するクライアントが増えるにつれて競合が発生するためです。

SQL Serverはディスクに永続化され、フェールオーバー機能を備えたクラスターとしてセットアップできるため、信頼性が高くなります。

詳細な説明については、この記事の前文を参照してください。

于 2009-09-20T20:27:36.543 に答える
16

ちょっとした、しかし重要な補足: InProc は名前が示すようにファームでは使用できません。現在の w3wp プロセスで実行され、ファーム全体で共有することはできません。StateServer は Windows サービスであるため、StateServer を使用する速度は、stateserver サービスが実行されているマシンの速度に依存します。これはメモリのみです。もちろん、SQL はデータを書き込んで取得する必要がありますが、これはおそらくメモリのみよりも遅くなります。

ここから:

  • 処理中。セッション状態のメモリが ASP.NET プロセス内に保持されるため、処理中が最適なパフォーマンスを発揮します。単一のサーバーでホストされている Web アプリケーションの場合、ユーザーが正しいサーバーにリダイレクトされることが保証されているアプリケーション、またはセッション状態データが重要ではない場合 (再構築または再入力できるという意味で) 、これが選択するモードです。
  • プロセス外。このモードは、パフォーマンスが重要であるが、ユーザーがどのサーバーからアプリケーションを要求するかを保証できない場合に最適です。アウトプロセス モードでは、メモリからの読み取りのパフォーマンスと、すべてのサーバーの状態を管理する別のプロセスの信頼性が得られます。
  • SQLサーバー。このモードは、データの信頼性がアプリケーションの安定性に不可欠な場合に最適です。障害シナリオに備えてデータベースをクラスター化できるためです。パフォーマンスはアウト プロセスほど高速ではありませんが、トレードオフはより高いレベルの信頼性です。
于 2009-09-19T00:28:46.343 に答える
12

このリンクから: http://www.eggheadcafe.com/articles/20021016.asp

パフォーマンス

  • InProc - 最速ですが、セッション データが多いほど、Web サーバーでより多くのメモリが消費され、パフォーマンスに影響を与える可能性があります。

  • StateServer - 基本型 (文字列、整数など) のデータを格納する場合、あるテスト環境では InProc よりも 15% 遅くなります。ただし、大量のオブジェクトを格納している場合、シリアル化/逆シリアル化のコストがパフォーマンスに影響を与える可能性があります。独自のシナリオのパフォーマンス テストを行う必要があります。

  • SQLServer - 基本型 (文字列、整数など) のデータを格納する場合、あるテスト環境では InProc より 25% 遅くなります。StateServer と同じシリアライゼーションに関する警告。

そのため、StateServer は、セッション状態を保存するために SQL Server よりも少し高速であるように思われます。

その理由については、SQL Server はより多目的であり、他の目的にも使用される可能性が高いと思います。それだけでなく、保存メカニズムはディスクにあり、StateServer は別のプロセスで実行されているため、データをディスクに書き込む必要はなく、他のプロセスのメモリ空間にデータを保存するだけです (仮想メモリが許可されている場合)。

于 2009-09-18T23:12:56.920 に答える