セッション状態のスケーリングと設定

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

連絡先がウェブサイトを閲覧すると、Sitecoreとのやり取りに関するデータはセッション終了までセッション状態のまま保存され、その後xConnectにコミットされます。xConnectはその後、セッション情報や連絡先のデータの変更を分析および連絡先データベースに更新します。

しかし、1人の連絡先が同じウェブサイト上で同時に2つ以上のセッションを持つこともあります。これは、連絡先が異なるデバイスや同じデバイス上で複数のブラウザを使用している場合に起こり得ます。連絡先のすべての同時セッションを管理するために、セッションステートサーバーが必要です。

セッション状態の設定は、複数の処理サーバーやコンテンツ配信(CD)サーバークラスターを持つマルチサーバー環境を展開する場合に特に重要です。セッション状態は、Sitecoreが複数のアクティブなセッション間で連絡先のデータを共有できるようにします。

!注Sitecore 9.0以降、連絡先セッションを他のクラスタに自動転送する仕組みはありません。同じネットワーク上の同じ連絡先から異なるセッションを収集する必要はありません。xConnectがすべての連絡先情報の更新を処理します。連絡先がどのクラスタに接続するかを制御したい場合は、ロードバランサーで設定する必要があります。

!注Sitecore 10.0以降、共有セッションステートストアの役割はデフォルトで無効化されています。これは所有コスト(データベースが1つ減る)を削減し、リクエスト性能を向上させるためです。つまり、連絡先データに基づくパーソナライズは複数の同時セッションで古くなってしまう可能性があります。ビジネス上の要件に共有セッションが含まれている場合は、いつでも 共有セッションステートストアを有効にする ことができます。

このトピックでは、セッションの状態タイプ、セッション状態プロセス、セッション状態の設定シナリオについて説明します。

セッション状態の種類

セッション中、Sitecoreは2つのセッション状態ストアにデータを書き込みます:

ストア

内容

私立

閲覧したページ、変換された目標、またはトリガーされたキャンペーンなどの連絡先訪問情報の情報が含まれています。プライベートセッション状態は、ウェブサイトにアクセスするブラウザにとってプライベートです。

連絡先がデスクトップと携帯電話の両方から同時にウェブサイトにアクセスする場合、各デバイスは独自のプライベートセッション状態を持ちます。

プライベートセッションのデフォルトのタイムアウトは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フレームワークに付属するデフォルトのセッション状態提供者です。内部メモリを使ってやり取りや訪問を記録します。

特定のインタラクション(単一ビジターセッションまたは訪問)に関連するすべてのデータに対して、プライベートセッション状態を扱う最も適した方法です。CMサーバーに推奨されるモードです。

負荷分散環境でプロセスを使う場合、負荷分散器をスティッキーセッションを使用するように設定する必要があります。

手続き終了

プロセス外とは、外部のASP.NET セッションステートプロバイダーを使用することを意味します。Sitecoreは、オフオブプロセスセッション状態の設定のために以下のセッションステートプロバイダーを提供しています:

  • Sitecore ASP.NET Session State Provider for Redis。

  • Sitecore ASP.NETセッション州プロバイダー Microsoft SQL Server。

Session_Endイベントをサポートするカスタムプロバイダーならどれでも利用できます。

共有セッション状態の場合、2台以上のCDサーバーがある場合は、プロセス外を使わなければなりません。

CMサーバーではプロセス外はサポートされていません。

セッション状態の設定シナリオ

以下の表は、異なるタイプのSitecore CDサーバー構成におけるプライベートおよび共有セッション状態の可能な構成を示しています。

シナリオ

プライベートセッション状態

共有セッション状態

シングルスタンドアロンサーバー

プロセス外 、または In process

プロセス外 、または In process

単一の専用CDサーバー

プロセス外 、または In process

プロセス外 、または In process

粘着性負荷分散機能を持つCDクラスター

プロセス外 、または In process

手続き終了

粘着性のない負荷分散を備えたCDクラスター

手続き終了

手続き終了

!注各CDクラスターに対してセッションステートサーバーは1つだけ設定する必要があります。

専用CMサーバー上のプライベートセッション状態は、必ずin processを使わなければなりません。

セッションステートプロバイダー

セッションステートデータベースの設定時に使用するデータベースシステムによっては、セッションステートプロバイダーを使用する必要があります。Sitecoreには以下のプロバイダーが付属しています:

  • Sitecore ASP.NET Session State Provider for Redis(Redis 用)
  • Sitecore ASP.NETセッション州プロバイダー for Microsoft SQL Server

!注MongoDBセッションステートプロバイダーはSC10.1以降で削除されています。

専用のセッションステートデータベースサーバーを設定するのに専用のSitecoreインスタンスは必要ありません。

共有セッションとプライベートセッションの状態情報を同じデータベースに保存できます。データベースはセッションの種類を区別できます。

セッションステートプロバイダーの設定は以下の通りです:

!注セッションステートデータベースの展開を計画する際は、メモリとディスクの状態要件を見積もることを忘れないでください。

!重要トラッカーコンテキストで使用されるすべてのカスタムクラスは、シリアライズ可能でなければなりません。詳細については、MicrosoftのドキュメントにあるSerializableAttributeクラスの説明をご覧ください。

この記事を改善するための提案がある場合は、 お知らせください!