1. セッション状態のスケーリングと構成

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

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

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

連絡先は、異なるデバイスまたはブラウザーセッションから同時にWebサイトに複数回アクセスできます。共有セッション状態では 、セッション状態データベースは 、これらの複数のセッション間で共有できるすべてのデータを収集します。これには、たとえば、連絡先やデバイスに関連するデータが含まれます。このデータは引き続き連絡先に対して非公開ですが、同じ連絡先によって行われた現在のすべてのセッションからアクセスできます。

コンテンツ配信 (CD) サーバーでは、1つのCDサーバー、複数のCDサーバー、またはクラスタ環境のいずれであっても、常に共有セッション状態を構成する必要があります。

メモ

共有セッション状態は、コンテンツ管理 (CM) サーバーではサポートされていません。

共有セッション状態は、抽象SessionStateStoreProviderBaseクラス (ASP.NETに付属) を拡張する任意のセッション状態ストア プロバイダーを使用するように構成できます。唯一の追加要件は、セッション状態ストア プロバイダーがSessionStateItemExpireCallbackデリゲートを使用してSessionEndイベントを呼び出すことができる必要があることです。

手記

ASP.NETに付属する標準のOutOfProcSessionStateStoreクラスはSessionEndイベントをサポートしていないため、共有セッション状態では使用できません。

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

  • SQL Serverセッション データベースをデプロイする

  • Sitecoreの設定

  • 共有セッションの状態設定を調整する

SQL Serverセッション データベースをデプロイする

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

手記

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

SQL Serverセッション データベースをデプロイするには

  1. Microsoft SQL Server Management Studio 2016以降を起動します。

  2. SessionデータベースをインストールするサーバノードにConnectします。

  3. サーバ ノードを展開し、Databasesを右クリックして、Deploy Data-tier Applicationをクリックします。

  4. Deploy Data-tier ApplicationウィザードのSelect Packageページで、Browseをクリックします。

  5. Sitecore.Sessions.dacpacファイルを選択し、Nextをクリックします。

    手記

    このファイルは、SitecoreアーカイブのルートにあるDatabasesフォルダにあります。

  6. Update Configurationステップで、データベースの名前を指定して「Next」をクリックし、サマリー情報を検証した後、「Next」をクリックします。デプロイが完了すると、アタッチされたデータベースのリストにセッション・データベースが表示されます。

  7. 次の接続文字列をConnectionStrings.configファイルに追加します。

    <add
        name="sharedSession"
        connectionString="User ID=<SQL server username>;Password=<user password>;Data Source=<SQL server>;Database=<shared session database name>"
    />
  8. 接続文字列のユーザーは、セッション・データベースでストアド・プロシージャを実行できるようにする必要があります。他の権限は必要ありません。システム管理者は、次のSQLステートメントを使用してこの権限を付与できます。

    USE <shared session database name>;
    GRANT EXECUTE TO <SQL server username>;
    GO

Sitecoreの設定

手記

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

既定では、Sitecoreはインプロセス プロバイダーを使用します。インプロセス プロバイダーは、データをメモリに格納し、内部ASP.NETInProcSessionStateStoreクラスに実装されます。 

<sharedSessionState defaultProvider="inProc">
    <providers>
    <clear/>
    <add name="inProc"
      type="System.Web.SessionState.InProcSessionStateStore"
      />
    </providers>

デフォルトではなくSQL Serverの共有セッション状態ストア プロバイダーを使用するようにSitecoreを設定するには:

  1. Webサイトのルート フォルダーで、\App_Config\Sitecore\Marketing.Trackingフォルダーに移動します。

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

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

  4. デフォルトのプロバイダをinProcからmssqlに変更し、name属性値をmssqlに変更します。

    <sharedSessionState
          defaultProvider="mssql">
        <providers>
            <clear/>
            <add name="mssql"
                type="Sitecore.SessionProvider.Sql.SqlSessionStateProvider,Sitecore.SessionProvider.Sql"
                connectionStringName="sharedsession"
                pollingInterval="2"
                compression="true"
                sessionType="shared"/>
        </providers>
手記

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

共有セッションの状態設定を調整する

Sitecore.Analytics.Tracking.Configファイルで、次のセッション状態設定を編集します。

設定

形容

価値

connectionStringName

Sitecoreがセッション データベースに接続するために使用する接続文字列を指定します。

編集して、必要なセッション状態データベースを指定します。

例えば:

connectionStringName="sharedSession"

pollingInterval

セッション状態プロバイダーがセッションの有効期限が切れているかどうかを確認するために使用する時間間隔を秒単位で指定します。

例えば:

pollingInterval="2"

compression

セッション状態データを圧縮することを指定します。

デフォルト値はtrueです。セッション状態データを圧縮すると、データベースとSitecoreインスタンス間で転送する必要があるデータの量が減ります。これにより、追加のCPUオーバーヘッドが発生する可能性があります。

例えば:

compression="true"

sessionType

セッション・ステートのタイプがsharedであることを指定します。

有効な値のみ:

sessionType="shared"

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