セッション状態のスケーリングと構成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
コンタクトがWebサイトを閲覧すると、Sitecoreとのインタラクションに関するデータは、セッションが終了するまでセッション状態で保存され、その後xConnectにコミットされます。その後、xConnectは、セッションに関する情報と、コンタクトのデータの変更を分析およびコンタクト データベースで更新します。
ただし、1人の連絡先が同じWebサイトで同時に2つ以上のセッションを行うことは可能です。これは、連絡先が異なるデバイスを使用している場合、または同じデバイス上の複数のブラウザーを使用している場合に発生する可能性があります。連絡先のすべての同時セッションを追跡するためのセッション状態サーバーが必要です。
セッション状態の構成は、複数の処理サーバーまたはコンテンツ配信 (CD) サーバーのクラスターを持つマルチサーバー環境を展開する場合に特に重要です。セッション状態により、Sitecoreはクラスター内の複数のアクティブ セッション間で連絡先のデータを共有できます。
Sitecore 9.0では、コンタクト セッションを別のクラスターに自動的に転送するメカニズムはありません。xConnectが連絡先情報のすべての更新を処理するため、1つのクラスター上の同じ連絡先から異なるセッションを収集する必要はありません。連絡先が接続するクラスターを制御する必要がある場合は、ロードバランサーでこれを構成する必要があります。
このトピックでは、セッション状態の種類、セッション状態プロセス、およびセッション状態の構成シナリオについて説明します。
セッション状態の種類
セッション状態の種類
セッション中、Sitecoreは2つのセッション状態ストアにデータを書き込みます。
|
店 |
コンテンツ |
|---|---|
|
プライベート |
閲覧したページ、コンバージョンした目標、トリガーしたキャンペーンなど、連絡先の訪問情報に関する情報が含まれます。プライベートセッション状態は、Webサイトにアクセスするブラウザに対してプライベートです。 連絡先がデスクトップと携帯電話から同時にWebサイトにアクセスする場合、各デバイスには独自のプライベートセッション状態があります。 プライベートセッションのデフォルトのタイムアウトは20分です。 |
|
シェアード |
複数のアクティブ・セッション間で共有できる情報が含まれています。これには、セッションの開始時にトラッカーにロードされた連絡先情報が含まれます。 共有セッション状態には、連絡先のデータの読み取り専用コピーがあります。セッションの進行中は、連絡先はロックされません。アクティブなセッションのデータでコンタクトを更新する必要がある場合は、xConnect Client APIを使用します。 共有セッション状態は、Content Management (CM) サーバーではサポートされていません。 共有セッションのタイムアウトは、プライベートセッションのタイムアウトに1分を加えた値として計算され、共有セッションのデフォルトタイムアウトは21分になります。 |
共有セッション状態は、抽象クラスSessionStateStoreProviderBase (ASP.NETに付属) を拡張する任意のセッション状態ストア プロバイダーを使用するように構成できます。唯一の追加要件は、セッション状態ストア プロバイダーがSessionStateItemExpireCallbackを介してSessionEndイベントを呼び出すことができる必要があることです。
ASP.NETに付属する標準のOutOfProcSessionStateStoreクラスはSessionEndイベントをサポートしていないため、共有セッション状態では使用できません。
CDサーバーでは、プライベート・セッション状態と共有セッション状態の両方を構成する必要があります。両方に同じセッション プロバイダーを使用できます。その場合は、システムが2つのセッション状態を区別できるように、セッション状態プロバイダーを正しいノードに構成する必要があります。
|
店 |
設定ファイル |
ノード |
|---|---|---|
|
プライベート |
web.config |
sessionState |
|
シェアード |
\App_Config\Sitecore\Marketing.Tracking\Sitecore.Analytics.Tracking.Config |
sharedSessionState |
セッション状態プロセス
セッション状態プロセス
プライベートセッション状態と共有セッション状態の両方を、インプロセス (InProc) またはアウトオブプロセスとして構成できます。
|
過程 |
筆記 |
|---|---|
|
処理中 |
Microsoft .NET Frameworkに付属する既定のセッション状態プロバイダー。内部メモリを使用して、インタラクションと訪問を追跡します。 これは、特定のインタラクション(単一の訪問者セッションまたは訪問)に関連するすべてのデータのプライベートセッション状態を処理するのに最適な方法です。これは、CMサーバーに使用することを推奨するモードです。 ロード・バランシング環境でイン・プロセスを使用する場合は、スティッキー・セッションを使用するようにロード・バランサを構成する必要があります。 |
|
アウト・オブ・プロセス |
アウト オブ プロセスとは、外部のASP.NETセッション状態プロバイダを使用することを意味します。Sitecoreには、アウト オブ プロセス セッション ステートを設定するための次のセッション ステート プロバイダーが付属しています。
Session_Endイベントをサポートする任意のカスタム プロバイダーを使用できます。 共有セッション状態の場合、2つ以上のCDサーバーがある場合は、アウト オブ プロセスを使用する必要があります。 アウト オブ プロセスはCMサーバーではサポートされていません。 |
セッション状態の構成シナリオ
セッション状態の構成シナリオ
次の表は、さまざまなタイプのSitecore CDサーバー設定のプライベートおよび共有セッション状態の可能な設定を示しています。
|
シナリオ |
プライベート・セッションの状態 |
共有セッションの状態 |
|---|---|---|
|
単一のスタンドアロン サーバー |
Out of process又は In process |
Out of process又は In process |
|
1台の専用CDサーバ |
Out of process又は In process |
Out of process又は In process |
|
スティッキーロードバランシングを備えたCDクラスタ |
Out of process又は In process |
Out of process |
|
非スティッキー負荷分散を備えたCDクラスタ |
Out of process |
Out of process |
セッション状態サーバーは、CDクラスタごとに1つだけ構成する必要があります。
専用CMサーバー上のプライベート セッション状態の場合は、常にin processを使用する必要があります。
セッション状態プロバイダー
セッション状態プロバイダー
セッション状態データベースを構成するときに使用するデータベース・システムによっては、セッション状態プロバイダーを使用する必要があります。Sitecoreには次のプロバイダーが付属しています。
-
Sitecore ASP.NETセッション状態プロバイダー for Redis
-
Sitecore ASP.NET Microsoft SQL Serverセッション状態プロバイダ
MongoDBセッション状態プロバイダーは、SC10.1以降で削除されました。
専用のセッション状態データベース サーバーを設定するために、専用のSitecoreインスタンスは必要ありません。
共有セッション状態情報とプライベート・セッション状態情報を同じデータベースに格納できます。データベースは、セッションのタイプを区別できます。
セッション状態プロバイダーは、次の方法で構成できます。
セッション状態データベースのデプロイメントを計画するときは、メモリーとディスクの状態の要件を見積もることを忘れないでください。
トラッカーコンテキストで使用するすべてのカスタムクラスは、シリアル化可能である必要があります。詳細については、MicrosoftドキュメントのSerializableAttributeクラスの説明を参照してください。