---
title: "セッション状態のスケーリングと設定"
slug: "scaling-and-configuring-session-state"
abstract: "セッション状態の設定方法を学びましょう。"
---
# セッション状態のスケーリングと設定

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

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

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

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

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

## セッション状態の種類

セッション中、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 [セッションステートプロバイダー](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/scaling-and-configuring-session-state.html#UUID-12f10212-5e26-1487-08e0-d9ad0a7458f9_N1520265095481)を使用することを意味します。Sitecoreは、オフオブプロセスセッション状態の設定のために以下のセッションステートプロバイダーを提供しています:  
  

-   Sitecore ASP.NET Session State Provider for Redis。
-   Sitecore ASP.NETセッション州プロバイダー Microsoft SQL Server。
-   Sitecore ASP.NET MongoDB セッションステートプロバイダー。

  
  
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
-   Sitecore ASP.NET MongoDB セッションステートプロバイダー。

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

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

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

-   [SQLプロバイダーを使って共有セッション状態データベースを構成します](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/walkthrough--configuring-a-shared-session-state-database-using-the-sql-provider.html "Walkthrough: Configuring a shared session state database using the SQL provider")
-   [SQLプロバイダーを使ってプライベートセッション状態データベースを設定](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/walkthrough--configuring-a-private-session-state-database-using-the-sql-provider.html "Walkthrough: Configuring a private session state database using the SQL provider")
-   [Redisを使って共有セッション状態データベースを構成します](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/walkthrough--configuring-a-shared-session-state-database-using-the-redis-provider.html "Walkthrough: Configuring a shared session state database using the Redis provider")
-   [Redisを使ってプライベートセッション状態データベースを設定します](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/walkthrough--configuring-a-private-session-state-database-using-the-redis-provider.html "Walkthrough: Configuring a private session state database using the Redis provider")
-   [MongoDBプロバイダーを使って共有セッション状態データベースを構成します](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/walkthrough--configuring-a-shared-session-state-database-using-the-mongodb-provider.html "Walkthrough: Configuring a shared session state database using the MongoDB provider")
-   [MongoDBプロバイダーを使ってプライベートセッションステートデータベースを設定できます](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/walkthrough--configuring-a-private-session-state-database-using-the-mongodb-provider.html "Walkthrough: Configuring a private session state database using the MongoDB provider")

> !注セッションステートデータベースの展開を計画する際は、[メモリとディスクの状態要件](https://doc.sitecore.com/xp/ja/developers/92/platform-administration-and-architecture/estimating-memory-and-storage-requirements-for-session-state.html "Estimating memory and storage requirements for session state")を見積もることを忘れないでください。

> !重要トラッカーコンテキストで使用されるすべてのカスタムクラスは、シリアライズ可能でなければなりません。詳細については、Microsoftのドキュメントにある[SerializableAttribute](https://docs.microsoft.com/en-us/dotnet/api/system.serializableattribute?view=netframework-4.8)クラスの説明をご覧ください。