過剰なインタラクション量を持つコンタクトがあると、xConnectインスタンスおよびSQLデータベースで大量のリソースが消費される可能性があります。これにより、リクエストの実行に時間がかかるため、HTTPサーバー エラーが発生する可能性があります。
エラーの例:
Sitecore.XConnect.Operations.GetEntityOperation`1[Sitecore.XConnect.Interaction]: Sitecore.Xdb.Collection.Failures.DataProviderException: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.Data.SqlClient.SqlException: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception: The wait operation timed out
この記事では、SQLコレクション データベース プロバイダーで過剰なインタラクション量を持つコンタクトを探して分析する方法について解説します。
次のクエリを、ソリューションに存在するすべてのシャード データベースに対して実行してください。コンタクトのIDおよびインタラクション数が表示されるはずです。
SELECT TOP (100) ContactId, COUNT(ContactId) as Count
FROM [xdb_collection].[Interactions]
GROUP BY ContactId
ORDER BY Count DESC
数千のインタラクションがあるコンタクトが見つかった場合、システムに害を及ぼす可能性があるため、さらに調査する必要があります。以下のクエリで、前述の操作で発見したコンタクトの上位100件のインタラクションを取得できます。次に、「データの分析」節で説明されている通りに、インタラクションの内容を調査する必要があります。
SELECT TOP (100) *
FROM [xdb_collection].[Interactions]
WHERE ContactId = '6ffc58de-6c56-0000-0000-05d6639738da'
検出されたデータを分析するには、次のステップを実行してください。
SELECT *, CONVERT(VARCHAR(MAX), Identifier) as IdentifierStringコンタクトが匿名である場合、コンタクトが誰であるかを調べてみることができます。これを行うには、IdentifierString値を分析するか、次のクエリによって返されるFacetData値を分析します:
FROM [xdb_collection].[ContactIdentifiers]
WHERE ContactId = 'E24BAC10-CD1B-0000-0000-05D6D3DE8788'
SELECT *ここでの非常によくある問題は、負荷テストに使用されるコンタクトです。テスト セッション後に削除するか、テスト セッションを下位環境で実行し、操作後にxDBコレクションを再デプロイする必要があります。
FROM [xdb_collection].[ContactFacets]
WHERE ContactId = 'E24BAC10-CD1B-0000-0000-05D6D3DE8788'
SELECT TOP(100) *これにより、IPが既知のものかどうかを分析できます。このIPによるインタラクションが不審または過度なものである場合、「ロボット検出機能を設定する」に記載されている方法に従ってIPを除外することができます。
FROM [xdb_collection].[InteractionFacets]
WHERE ContactId = 'E24BAC10-CD1B-0000-0000-05D6D3DE8788' AND FacetKey = 'IpInfo'
過剰なインタラクション数を持つコンタクトは削除することをお勧めします。通常、これらはロボットでありレポートに価値を与えない上、システムに余分な負荷がかかるためです。
過剰なインタラクション数を持つコンタクトを削除するには、次のいずれかのオプションを検討してください: