1. セッション状態

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

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

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

プライベートセッション状態では、閲覧したページ、コンバージョンに至った目標、トリガーされたキャンペーン、累積エンゲージメントポイントなど、特定のインタラクションに関連するすべてのデータが収集され、セッション状態データベースに保存されます。

このチュートリアルでは、Sitecore ASP.NET Session State Store Provider for Redisを使用して、Redisをプライベート セッション状態ストアとして使用する方法について説明します。プライベートRedisセッション データベースのデプロイ方法、Sitecoreの設定方法、セッション状態設定の調整方法について説明します。

メモ

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="session" connectionString="_host_:_port_number _" />
  3. セッション・データベースを指すように接続文字列を構成します。

  4. 変更を保存します。

Sitecoreの設定

Redisセッションプロバイダーを使用している場合、すべてのコンテンツ配信サーバーは、同じデータベースを指す同じプロバイダーを使用する必要があります。Redisのプライベート セッション状態ストア プロバイダーを使用するようにSitecoreを設定するには:

  1. サイトのルートフォルダに移動し<sitename>\websiteweb.configファイルを開いて、sesssionStateセクションを見つけます。

    <sessionState mode="InProc" cookieless="false" timeout="20">
  2. 次の例に示すように、InProcではなくredisプロバイダーを使用するようにsessionStateセクションを更新します。また、name属性の値をredisに変更します。

    <sessionState mode="Custom" customProvider="redis" timeout="20">
      <providers>
        <add name="redis"
          type="Sitecore.SessionProvider.Redis.RedisSessionStateProvider,
          Sitecore.SessionProvider.Redis"
          connectionString="session"
          pollingInterval="2"
          applicationName="private"/>
      </providers>
    </sessionState>
大事な

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

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

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

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

プライベートセッション状態のpollingEnabled設定を構成するには、プライベートセッション処理を無効にします。

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

    <sessionState
      mode="Custom"
      customProvider="redis"
      cookieless="false"
      timeout="1"
      sessionIDManagerType="Sitecore.SessionManagement.ConditionalSessionIdManager">
      ...      
      <providers>
        <add name="redis" 
          type="Sitecore.SessionProvider.Redis.RedisSessionStateProvider, Sitecore.SessionProvider.Redis" applicationName="Application"
          connectionString="redis.sessions"
          pollingEnabled="false"
          pollingInterval="2"
          pollingMaxExpiredSessionsPerSecond="0"
          pollingMaxInstances="1"
          compression="true"/>
      </providers>
    </sessionState>

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

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

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

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

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

  2. Redisプロバイダー設定リファレンスを参照してください。

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