15.2. HttpSession パッシブ化およびアクティブ化
パッシブ化
比較的未使用のセッションを永続ストレージに保存し、メモリから削除することによりメモリ使用を制御するプロセス。
パッシブ化されたセッションがクライアントにより要求された場合、セッションはメモリにアクティブ化され、永続ストアから削除されることがあります。JBoss Enterprise Application Platform 5 は、
web.xml
ファイルに distributable
ディレクティブが含まれるクラスタ化された Web アプリケーションからの HttpSessions パッシブ化をサポートします。
パッシブ化は、Web アプリケーションのライフサイクルの 3 つの地点で行われます。
- コンテナが新しい要求の作成を要求するとき。現在アクティブなセッションの数が設定可能な制限を超えると、セッションをパッシブ化し、メモリのスペースを空けることが試行されます。
- JBoss Web バックグラウンドタスクスレッドが実行される周期 (デフォルトでは 10 秒ごと)。
- Web アプリケーションがデプロイされ、他のサーバーでアクティブなセッションのバックアップコピーが新しいデプロイ Web アプリケーションのセッションマネージャにより取得されたとき。
セッションは、以下の条件のいずれかに該当する場合にパッシブ化されます。
- セッションが設定可能な最大アイドル時間より長い時間使用されていない場合。
- アクティブセッションの数が設定可能な最大値を超え、セッションが設定可能な最小アイドル時間より長い時間使用されていない場合。
どちらの場合でも、セッションは Least Recently Used (LRU) に基づいてパッシブ化されます。
15.2.1. HttpSession パッシブ化の設定
セッションパッシブ化の動作は、Web アプリケーションの
WEB-INF
ディレクトリの jboss-web.xml
デプロイメント記述子により設定されます。
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> <jboss-web> <max-active-sessions>20</max-active-sessions> <passivation-config> <use-session-passivation>true</use-session-passivation> <passivation-min-idle-time>60</passivation-min-idle-time> <passivation-max-idle-time>600</passivation-max-idle-time> </passivation-config> </jboss-web>
- max-active-session許可されるアクティブセッションの最大数を決定します。セッションマネージャにより管理されるセッションの数がこの値を超え、パッシブ化が有効化される場合、設定された
passivation-min-idle-time
に基づいて超過はパッシブ化されます。パッシブ化が完了した後でも (または、パッシブ化が無効な場合)、アクティブセッションの数がこの制限を超えるは、新しいセションの作成が拒否されます。-1
(デフォルト値) に設定された場合、制限はありません。 - use-session-passivationWeb アプリケーションに対してセッションパッシブ化が有効であるかどうかを決定します。デフォルト値は
false
です。 - passivation-min-idle-time
max-active-sessions
により定義された値に従うアクティブセッション数を削減するために、コンテナがパッシブ化を考慮する前にセッションを無効にする最小時間 (秒単位) を決定します。値が-1
(デフォルト値) の場合は、passivation-max-idle-time
より前にセッションのパッシブ化が無効にされます。max-active-sessions
が設定されている場合は、-1
の値や大きい値は推奨されません。 - passivation-max-idle-timeコンテナがセッションをパッシブ化してメモリを保存する前にセッションを無効にできる最大時間 (秒数) を決定します。このようなセッション のパッシブ化は、アクティブセッション数が
max-active-sessions
を超えるかどうかに関係なく、実行されます。web.xml
session-timeout
設定よりも小さい必要があります。値が-1
(デフォルト値) である場合は、無効の最大時間に基づいてパッシブ化が無効になります。
メモリ内のセッションの合計数には、このノードでアクセスされない他のクラスタノードからレプリケートされたセッションが含まれます。
max-active-sessions
を設定する場合はこれを考慮してください。他のノードからレプリケートされたセッションの数は、buddy replication が有効であるかどうかによっても異なります。
たとえば、8 つのノードクラスタが存在し、各ノードが 100 人のユーザーからの要求を処理するとします。total replication を使用する場合、各ノードはメモリ内に 800 個のセッションを保存します。buddy replication が有効であり、デフォルトの
numBuddies
設定 (1
) を使用する場合、各ノードはメモリ内に 200 個のセッションを保存します。