スケーラブルなクラウド環境で使用できるように、Tomcat の HttpSessions をディスクに保持したいと考えています。ポイントは、(クラウド PaaS 内に) 多数の Tomcat ノードが稼働し、クライアントをそれらのいずれかに誘導できることです。共有ディスク装置からセッションを保持してロードしたいと考えています。
PersistentManager を次のように構成しました。
context.xml
<Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore" directory="c:/somedir"/>
</Manager>
問題は、セッションが明らかにディスクにフラッシュされないことです。
<Manager>
maxIdleBackup を追加して構成を変更しました。
<Manager className="org.apache.catalina.session.PersistentManager maxIdleBackup="1">
このようにして、セッションがディスクに永続化されるまで、ほぼ 1 分かかります。奇妙なことに、ドキュメントには約 1 秒かかると記載されています。
maxIdleBackup : セッションに最後にアクセスしてから、セッション ストアに永続化できるようになるまでの時間間隔 (秒単位)、または -1 でこの機能を無効にします。デフォルトでは、この機能は無効になっています。
その他の構成:
ドキュメントに従って、システムプロパティを設定しました
org.apache.catalina.session.StandardSession.ACTIVITY_CHECK -> true
セッションをすぐにディスクにフラッシュする方法はありますか? セッションの変更もすぐに永続化することはできますか?
アップデート:
を使用してセッションのパッシベーションとディスクへのフラッシュを強制しようとしましたmaxIdleBackup="0" minIdleSwap="0" maxIdleSwap="1"
が、それでも約 1 分かかります。