不正確なJSONレンダリングのキャッシュ サイズ計算ロジックによりHTMLキャッシュ メモリ リークが生じる


解説

Sitecoreはキャッシュ サイズ計算の最適化を行うのにタイプ キャッシュを使用します。その結果、HTMLキャッシュに追加されたJSONレンダリングのキャッシュ サイズの計算に誤りが生じ、HTMLキャッシュのメモリ リークを発生させる可能性があります。

この問題によってソリューションが影響を受けているかを確認するには、以下を実施してください。

  1. メモリ ダンプ ファイルを収集します。
  2. メモリ ダンプ ファイルからの実際のキャッシュ サイズと、/sitecore/admin/cache.aspxページに表示されている推定キャッシュ サイズの間に矛盾があるか確認します。

解決策

問題を解決するには、以下の解決策のいずれかを実施します。

    1. Sitecore XP 10.3およびSitecore Headless Rendering 21については、KB1003493に掲載されているSitecore Headless Servicesモジュールの累積hotfixをダウンロードしてインストールします。
    2. 以下の設定を調整して、キャッシュ サイズ計算の精度を向上させます。
      • 以下の設定を使用して、キャッシュ サイズ計算の深さを増やします。
        <setting name="LayoutService.CacheCalculationDepth" value="7" patch:source="Sitecore.LayoutService.config" />

        デフォルト値は「7」です。この設定値を増やすことにより、キャッシュ サイズ計算の複雑性が増加する点にご注意ください。同時に、アプリケーションの応答速度に影響を与える可能性があります。

      • 以下の設定を使用し、各キャッシュ サイズのエントリのサイズに固定値を掛けます。
        <setting name="LayoutService.JsonCacheMultiplier" value="1" patch:source="Sitecore.LayoutService.config" />

        デフォルト値は「1」です。このアプローチは正確ではなく、個別のキャッシュ サイズ エントリの推定の振れ幅が大きくなる可能性があります。
        この設定は、「LayoutService.CacheCalculationDepth」設定を調整して結果を見た後に調整していただくことをお薦めいたします。

      • 設定値は、\App_Config\Include\zzzフォルダーに構成パッチ ファイルを作成することで変更する必要があります。
      • 将来的にこれらの設定の調整が必要になる可能性があります。これはページ レイアウト コンポーネントのネスト レベルに依存します。ただし、コンテンツの量またはページ上のコンポーネントの数は影響しません。