StateServer を使用しているときにアクティブなユーザーの数を確認するにはどうすればよいですか? また、StateServer にクエリを実行して、セッション状態の内容を取得することはできますか?
バッキング ストアに SqlServer を使用する場合、これがすべて可能であることはわかっていますが、それらをメモリ内に配置したいと考えています。
StateServer を使用しているときにアクティブなユーザーの数を確認するにはどうすればよいですか? また、StateServer にクエリを実行して、セッション状態の内容を取得することはできますか?
バッキング ストアに SqlServer を使用する場合、これがすべて可能であることはわかっていますが、それらをメモリ内に配置したいと考えています。
ステート サーバーでアクティブなセッションの数は、ステート サーバーを実行しているサーバーのパフォーマンス カウンターで簡単に確認できます。これは、アクティブなユーザーとは直接関係ありません (セッション タイムアウト時間のため)。
アクティブなセッションのカウンターは次のとおりです。"Asp.net" - "State Server Sessions Active"
参考までに、 http://msdn.microsoft.com/en-us/library/fxk122b4.aspxの State Server 関連のすべての perfmon カウンターを次に示します。
State Server Sessions Abandoned 明示的に放棄されたユーザー セッションの数。これらは、ブラウザーを閉じる、別のサイトに移動するなど、特定のユーザー アクションによって終了するセッションです。このカウンターは、状態サーバー サービス (aspnet_state) が実行されているコンピューターでのみ使用できます。
State Server Sessions Active 現在アクティブなユーザー セッションの数。このカウンターは、状態サーバー サービス (aspnet_state) が実行されているコンピューターでのみ使用できます。
State Server Sessions Timed Out ユーザーが操作を行わなかったために非アクティブになったユーザー セッションの数。このカウンターは、状態サーバー サービス (aspnet_state) が実行されているコンピューターでのみ使用できます。
State Server Sessions Total プロセスの有効期間中に作成されたセッションの数。このカウンターは、State Server Sessions Active、State Server Sessions Abandoned、および State Server Sessions Timed Out の合計値です。このカウンターは、状態サーバー サービス (aspnet_state) が実行されているコンピューターでのみ使用できます。
ユーザー数の追跡は、セッション レベルではなく、アプリケーション レベルで行う必要があります。
次の方法で、現在セッションにあるものを確認できるはずです。
StringBuilder builder = new StringBuilder();
foreach ( String key in Session.Contents ) {
builder.AppendFormat("{0}: {1}<br />", key, Session[key]);
}
Response.Write(builder.ToString());