2009-05-20 16 views
4

現在、単一のサーバー上で実行されているASP.NET Webアプリケーションがあります。そのサーバーはCPU使用率に関して危険ゾーンに近づきつつあり、2番目のサーバーを展開したいと考えています。セッション状態サーバーの冗長性

セッション状態を処理する最も良い方法は何ですか?

現在、InProcを実行しています。 WLBローテーションから1台のサーバを除外してメンテナンス作業を行う場合があるので、これは2台以上のサーバのオプションではありません。スティッキーロードバランシングを使用していても、WLBローテーションからサーバーを除外するには、すべてのユーザーが終了するまで待つ必要があります。

だから私は、このMSDNのページを見ていた:http://msdn.microsoft.com/en-us/library/ms178586(VS.80).aspx

私は私の主な質問はある推測:我々は状態サーバーモードを使用する場合。 2台のサーバーにステート・サーバーを導入することでレンダリングを保証できますか?単一の障害点を避けるため。

答えて

1

標準オプションの1つが必要な場合は、フェールオーバークラスタでSQL Serverを使用します。あなたはmemcacheddbを検討していますか?

+0

memcachedについてもっと教えてください。 – MartinHN

+0

Martinは申し訳ありませんmemcachedDBを意味していますが、memcachedを複製すると簡単には読めません。http://memcachedb.org。 memcachedプロバイダーがそれを使って動作するかどうかを確認する必要があります(http://www.codeplex.com/memcachedproviders)。 – RichardOD

+0

ああ。それはあなた自身の責任で使用するように見えます。私たちは何かをサポートしたり保証したりしません。 – MartinHN

0

スケールアウト状態のサーバー(速い方が良い)またはSQL状態(遅い方が簡単です)のいずれかを使用します。ただし、移行後に例外が発生するため、シリアライズ可能なオブジェクトをセッション状態に保存しない場合は注意してください。

+2

また、Global.asaxのSession_Endはstateサーバで起動しないため、inProcを使用しているときにこのイベントにフックすると機能が停止します。 – RichardOD

0

Sql Stateサーバーがより良いオプションになります。このリンクは役に立ちますSql State Server 。私はあなたが複数のマシン間で状態サーバーを実行できるとは思わない。

0

をMIX09セッションを見てお勧めします。唯一の欠点は、大規模なデータセットを持っている場合、ピア間で複製することが永久に取られていることです。