セッション データを ASP.net C# アプリケーションに格納できるモードは複数あります。その 1 つが InProc モードです。InProc モードで保持できるデータの最大量の制限は? これは構成可能な制限ですか?
編集:これはおそらくクールではなく、冒涜的に聞こえるかもしれませんが、私はおそらくセッションに10MBのファイルを保存する必要があるという独特の状況にあります. おそらく一度に数十匹。したがって、質問。
セッション データを ASP.net C# アプリケーションに格納できるモードは複数あります。その 1 つが InProc モードです。InProc モードで保持できるデータの最大量の制限は? これは構成可能な制限ですか?
編集:これはおそらくクールではなく、冒涜的に聞こえるかもしれませんが、私はおそらくセッションに10MBのファイルを保存する必要があるという独特の状況にあります. おそらく一度に数十匹。したがって、質問。
これが良い質問であるか怖い質問であるかは、多数の「スキニー」セッションの容量を計画しようとしているか (良い)、セッションに大量のデータを入れることを計画しているか (悪い) によって異なります。
IIS では、プライベート メモリ制御と仮想メモリ制御が可能です。これはデフォルトで無制限です。制限を設定すると、アプリ プールのリサイクルをトリガーするために使用できます。アプリ プールのリサイクルはおそらく望ましくありません。たとえば、1000 人のユーザーがログインし、メモリの上限に達し、サイトが再起動し、すべてのユーザーのセッション データが失われます。リクエストのスロットリングがより適切な場合があります。
「プロセス用に予約されたデータ ストレージの量は、オペレーティング システムがディスク上で取得できるスペースの量によってのみ制限されます」ということを覚えておいてください。(参照) しかし、ディスクにページングするとすぐに、パフォーマンスが著しく低下します。大量のネットワーク トラフィックを引き起こすアウト プロセスの「ファット」セッションに関する @RB のコメントも適切です。
メモとして、MemoryCacheはより詳細なサイズ/有効期限の制御を提供します。これは、ASP.Net が使用するものと非常によく似ています。10MB ファイルに関するコメントに基づいて、このオプションを検討することをお勧めします。セッションのようにプロセス内で実行されます (それでもセッションと同じメモリ制限の対象となります) が、ある程度制御することができます。
IIS7 では、アプリケーション プールごとに構成できるメモリ制限があります。しかし、セッション状態メモリを詳細に構成できるかどうかはわかりません。
サーバーまたはホスト マシンに使用可能なメモリがある限り、セッション内のデータの長さやサイズに制限はありません。