RedisCacheConnectionPoolManagerのロック競合により、Commerce Engineの起動時にスレッドの枯渇が発生する


説明

Commerce Engineの起動時に、Commerce Engineが停止する場合があります。この事象は、キャッシュからCommerceエンティティを解決するスレッドの枯渇により発生します。接続プールに接続オブジェクトを追加する際に、(特に同時に多数のリクエストがある場合、)着信リクエストの一部がロックして競合しお互いをブロックします。
この問題は、hotfixロールアップ パッケージのインストール後に発生します。

解決策

以下の方法を使用して、キャッシュ オブジェクトを使用してアクセスするのではなく、接続プールに接続オブジェクトを直接追加することが可能です。

  1. Startup.csファイルをダウンロードします。このファイルは、アプリケーションの起動時にRedis接続プールに接続オブジェクトを追加するコードが含まれています。
  2. Commerce Engine SDKからCustomer.Sample.Solutionを開きます。
  3. Sitecore.Commerce.Engineプロジェクトに移動します。
  4. Configure(...)メソッドの前に実行されるConfigureServices(...)メソッドのコードを、Sample.csファイルのコードに置き換えます。
  5. Sitecore.Commerce.Engineプロジェクトを作成し、出力されたアセンブリをCommerceインスタンスにデプロイします。