状態を保存するためにセッションを大幅に利用するASP.NetMVCアプリケーションがあります(大規模なデータ収集を含む)。現在、単一のWebサーバーでホストされています。セッションはデフォルトのInProcに設定されています。
多くのユーザーがオンラインになっていると、一部のユーザーのアプリケーションがフリーズするという問題が発生します。これは、InProcセッションのスケーリングがあまり良くなく、プロセスで使用できるメモリが非常に多いためだと思います。(メモリ需要が使用可能なメモリを超えた場合はどうなりますか?ディスクにスワップアウトしますか?)
スケーラビリティに役立つソリューションをいくつか考えています。(a)SQLサーバーのセッション状態。(b)AppFabricキャッシングを使用するようにセッション状態を構成します。最初のオプションは、パフォーマンスに影響を与え、保存されたアイテムをシリアル化できるようにする必要があることを除けば、優れたソリューションのように見えます。
単一のWebサーバーがキャッシュホストとしても使用される環境でAppFabricキャッシング(別名Velocity)を使用するようにセッション状態を構成するのはどうですか?これは、この単一サーバー環境でのInProcとどのように異なりますか?これにより、InProcよりもスケーラビリティと使用可能なメモリが提供されますか、それとも基本的に同じ制約になりますか?