MongoDB プロバイダーを、プライベート セッション状態と共有セッション状態の両方で使用すると、必要なインデックスがコレクションにない場合、MongoDBサーバーに大きな負荷がかかる可能性があります。
例えば、プライベートおよび共有のセッション状態プロバイダーが次のように構成されている場合に発生します。
<connectionStrings>
...
<add name="private.sessions" connectionString="mongodb://{user-name}:{password}@{host}/sitecore_private_sessions" />
<add name="shared.sessions" connectionString="mongodb://{user-name}:{password}@{host}/sitecore_shared_sessions" />
...
</connectionStrings>
<sessionState mode="Custom" customProvider="mongo" ... >
<providers>
...
<add name="mongo"
type="Sitecore.SessionProvider.MongoDB.MongoSessionStateProvider, Sitecore.SessionProvider.MongoDB"
sessionType="Private"
connectionStringName="private.sessions"
pollingInterval="5"
compression="true" />
...
</providers>
</sessionState>
<sharedSessionState defaultProvider="mongo">
<providers>
...
<add name="mongo"
type="Sitecore.SessionProvider.MongoDB.MongoSessionStateProvider, Sitecore.SessionProvider.MongoDB"
sessionType="Shared"
connectionStringName="shared.sessions"
pollingInterval="5"
compression="true" />
...
</providers>
...
</sharedSessionState>
Sitecore XPは、Sitecore.SessionProvider.MongoDB.MongoSessionStateProviderクラスの 2 つのインスタンスを作成しますが、最初のものだけがMongoDBのセッション コレクションをe_1__id.s_1__id.a_1インデックスで初期化します。その結果、プライベート セッション状態データベースのクエリにはインデックスが使用され、共有セッション状態データベースのクエリにはフル コレクション スキャンが使用されます。
この問題を解決するには、次の手順に従ってください: