Tomcat で別のセッション ストアを指定する方法はありますか?

StackOverflow https://stackoverflow.com/questions/82340

  •  01-07-2019
  •  | 
  •  

質問

Tomcat (ここではバージョン 5) はセッション情報をメモリに保存します。クラスタ化すると、同期を保つために、この情報がクラスタ内の他のサーバーに定期的にブロードキャストされます。データベース ストアを使用してセッションを永続化することもできますが、この情報も定期的に書き込まれるだけであり、実際にメモリ内のセッションを置き換えるのではなく、障害回復のためにのみ実際に使用されます。

スティッキー セッションを使用したくない場合 (残念ながら、構成では許可されていません)、セッションが同期しなくなるという問題が発生します。

他の言語では、Web フレームワークではデータベースをプライマリ セッション ストアとして使用できる傾向があります。これにより潜在的なスケーリングの問題が発生しますが、セッション管理は非常に簡単になります。この方法で Tomcat がセッションにデータベースを使用できるようにする方法があるかどうか疑問に思っています (技術的には、これにより、Tomcat のserver.xml 内のクラスタリング構成も必要なくなります)。

役に立ちましたか?

解決

必ず方法があります。私はスティッキーセッションに強く投票しますが、サーバー/データベースの負荷を大幅に節約します(何かが失敗しない限り)...

http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html SessionManager の設定と Tomcat のセットアップに関する情報が記載されています。正確な要件によっては、独自のセッション マネージャーを実装する必要がある場合がありますが、この開始点がいくつかの助けになるはずです。

他のヒント

を見てみましょう テラコッタ, アプリケーションを大幅に再設計することなく、スケーリングの問題に対処できると思います。

私は常に Rails セッション手法のファンです。セッション (圧縮+暗号化+署名) をユーザーの Cookie に保存します。そうすれば、負荷分散を思う存分行うことができ、スティッキーなセッションやセッション データのデータベースへのアクセスなどを心配する必要がなくなります。セッション アクセス コードを何らかの書き換えをせずに、これを Java アプリに簡単に実装できるかどうかはわかりません。とにかくただの思いつき。

別の代替案は、 memcached-セッションマネージャー, 、Tomcat 6.x / 7.x 用の memcached ベースのセッション フェイルオーバーおよびセッション レプリケーション ソリューション。スティッキー セッションと非スティッキー セッションの両方をサポートします。

このプロジェクトは、最高のパフォーマンスと信頼性を実現し、tomcat ノードと memcached ノードを追加するだけでスケールアウトできるようにするために作成しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top