1. セッション状態

チュートリアル: Redisプロバイダーを使用した共有セッション状態データベースの構成

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

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

共有セッション状態では、複数のセッション間で共有できるすべてのデータ (連絡先やデバイスに関連するデータなど) が収集され、セッション状態データベースに保存されます。

コンタクトはWebサイトへの複数の並行訪問を行うことができ、その場合、各訪問には独自のプライベートセッション状態があります。ただし、デバイスや連絡先に関連する情報など、一部のデータは訪問間で共有できます。

同じ連絡先による並列訪問間で共有される情報は、共有セッション状態ストアに格納されます。このデータは引き続き連絡先に対して非公開ですが、同じ連絡先によって行われた現在のすべてのセッションからアクセスできます。

このチュートリアルでは、RedisのSitecore ASP.NETセッション状態プロバイダーを使用して、Redisをアウトプロセス共有セッション状態ストアとして使用する方法について説明します。

メモ

Sitecoreバージョン8.2 Update 1以降は、オンプレミスとAzureの両方のインストールでRedisをサポートしています。Sitecore 8.2の初期リリースは、AzureのRedisのみをサポートします。

手記

SitecoreはRedisクラスターをサポートしていません。

共有Redisセッション データベースをデプロイする

Sitecore ASP.NETのRedisセッション状態ストア プロバイダーを使用すると、Redisをセッション状態ストアとして使用できます。プロバイダーは、xDBがWebサイトへのアクセスを追跡するために必要なSessionEndイベントをサポートしています。

大事な

設定ファイルを直接変更しないでください。代わりに、実行時に必要な変更を実行する パッチ ファイル を作成する必要があります。

Redisセッション・データベースをデプロイするには:

  1. Azure Redisまたは オンプレミスのRedisを選択します。Azure Redisをプロビジョニングするには、Microsoft Azure Webサイト またはAzure PowerShellの手順を使用します。

  2. <sitename>\Website\App_Configに移動し、ConnectionStrings.configファイルを開き、次の接続文字列を追加します。

    <add name="sharedSession" connectionString="_host_:_port_number _" />
  3. セッション・データベースを指すように接続文字列を構成します。

  4. 変更を保存します。

Sitecoreの設定

Redisの共有セッション状態プロバイダーを使用するようにSitecoreを設定するには、次のことを行う必要があります。

  1. Webサイトのルートフォルダに移動し、Website\App_Config\Includeフォルダに移動します。

  2. Sitecore.Analytics.Tracking.Configファイルを開きます。

  3. デフォルトの共有セッション状態プロバイダを定義できる行を、sitecore/tracking/sharedSessionStateのパスで見つけます。

  4. 次の例に示すように、sharedSessionState セクションを更新して、InProcではなくRedisをdefaultProvider として使用します。また、name属性値をredisに変更します。

    <sharedSessionState defaultProvider="redis">      
          <providers>
            <clear />
            <add name="redis" type=" 
    Sitecore.SessionProvider.Redis.RedisSessionStateProvider, 
    Sitecore.SessionProvider.Redis " connectionString="sharedSession" pollingInterval="2" 
    applicationName="shared" />
          </providers>
        </sharedSessionState>
大事な

設定ファイルを直接変更しないでください。代わりに、実行時に必要な変更を実行する パッチ ファイル を作成する必要があります。

専用のRedisセッション処理サーバーを構成する

Sitecore Experienceプラットフォームは、専用のRedisサーバーをサポートしています。つまり、CDサーバーのクラスタを使用する環境がある場合は、pollingEnabled設定を使用して、一部のサーバーをコンテンツのみを提供し、セッション状態データを処理しないように構成できます。

pollingEnabled設定では、期限切れのセッション処理を有効/無効にできます。たとえば、有効期限が切れるセッション専用のCDサーバーでは有効にし、ライブCDサーバー (訪問者にコンテンツを提供する) では無効にできます。

共有セッション状態のpollingEnabled settingを設定するには、共有セッション処理を無効にします。

  • Sitecore.Analytics.Tracking.configファイルで、専用CDサーバーの場合はpollingEnabled値をfalseに設定し、ライブ サーバーの場合はtrueに設定したままにします。

      <sharedSessionState defaultProvider="redis">
                    <providers>
                          
                        <add name="redis" type="Sitecore.SessionProvider.Redis.RedisSessionStateProvider, Sitecore.SessionProvider.Redis"
    connectionString="redis.sessions"   pollingEnabled="false" pollingInterval="2" applicationName="shared"/>
                    </providers>
    	             
                </sharedSessionState>

Redisプロバイダーの設定を調整する

Redisプロバイダー設定リファレンスを使用して、セッション状態を構成します。すべてが正しく構成されている場合、セッションレコードは最初のWebリクエストの後にRedisセッションデータベースに表示されます。

Redisセッションの有効期限調整を構成する別の手順

専用のRedisサーバーを作成できない場合は、代わりにpollingMaxExpiredSessionsPerSecond設定を構成して、期限切れの各セッション間に遅延を挿入することで大きなスパイクを減らすことができます。これにより、スパイク時に、有効期限が処理される前に配信にリソースの大部分が割り当てられます。共有セッションのpollingMaxExpiredSessionsPerSecond設定を構成するには:

  1. CPUが時間の大部分をWebリクエストに割り当てるのに十分な待機時間があることを確認し、web.configファイルで100などの高い値を設定します。

  2. 共有セッションのpollingMaxExpiredSessionsPerSecond設定を構成し、設定をSitecore.Analytics.Tracking.configファイルに追加して、その値をより大きな数値に更新します。次の例を参照してください。

    <sharedSessionState defaultProvider="redis">
        <providers>
                          
            <add name="redis" type="Sitecore.SessionProvider.Redis.RedisSessionStateProvider, Sitecore.SessionProvider.Redis" connectionString="redis.sessions" pollingEnabled="false" pollingInterval="2" applicationName="shared" pollingMaxExpiredSessionsPerSecond="100"/>
        </providers>
    	
この記事を改善するための提案がある場合は、 お知らせください!