2009-06-10 21 views
3

.NET Webアプリケーションでは、ログインしているユーザーごとに5〜7キロバイトのセッションオブジェクトがあります。セッションには、いくつかのクラスとユーザーの認証トークンを含むDictionaryオブジェクトが格納されます。このセッションのサイズは大きすぎるようですか?私は本当に良いサイズが何か、またはセッションのために従うべき良い実践を知りません。あなたのアイデアはありますか?ありがとうASP.NETセッションが大きすぎますか?

答えて

2

セッションには、絶対に必要なものだけをセッションに入れてください。それ以外の場合は、セッションに格納したIDを使用してキャッシュしたり、別の場所から取得したりします。他の場所に行くことができれば、セッションオブジェクトの内部ではなく、必要な場所に移動する可能性があります。

+0

私は完全に同意します。 – DevelopingChris

+0

キャッシュにも注意が必要です。あなたはセッションで同じ問題に遭遇することができます。 – Rob

+2

セッションオブジェクトの大きさを知るにはどうすればよいですか? – Rod

1

一般的な業界標準は、できるだけ低くし、オブジェクトをキャッシュし、IDをセッションに保存して次回の要求で取得することです。

一般的に、複数ボックスアプリケーションを実行してデータベースにセッションを格納してからオブジェクトに逆シリアル化しなければならない問題があります。

このようになったら、xmlのデータベースにヒットし、レコード自体をヒットするよりヒットしたほうがよいでしょう。

2

TXIとDevelopingChrisはベストプラクティスを提供していますが、ここではヘッドラインの質問に対する究極の答えがあります。あなたのセッションが大きすぎるかどうかを知ることができます。 Webサーバー上のメモリ使用量に問題がない場合(または外部状態サーバーを使用している場合はWebサーバーと状態サーバー間のトラフィックに問題が発生していない場合)、セッションにはあまり保存されません。あなたがいれば、そうです。

ベストプラクティスを使用すると、問題発生時の問題を解決し、発生する可能性を減らすことができますが、壊れていない場合は、コードの一部で貴重な開発エネルギーを費やす方がよいでしょう。ユーザーや保守性に影響を与えます。

1

スケーラビリティの要件によって異なります。 5-7K * 1000同時セッション= 57 MB。まともな量のRAMがあると仮定すると、あなたはうまくいくはずです。つまり、セッションに何が格納されているかを非常に注意し、絶対に必要でないものを保存しないようにする必要があります。

0

必要な場合はありません。あなたはそれを踏んで、あなたがキャッシュにもっと何ができるかを見たり、データベースに残しておく必要があります。

関連する問題