.NET ThreadPoolならびにHostingEnvironmentパラメータを調整することで、スレッドの枯渇とスロットリングを予防できる可能性があります。下記の解決策節で紹介されているサンプルのコードでは、次のことができることを示しています。
<?xml version="1.0"?> <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> <sitecore> <pipelines> <initialize> <!-- Thread pool limits should be configured in machine config, however an access to machine config is not provided in cloud. Thereby API-based approach must be taken. --> <processor type="Sitecore.Support.Pipelines.Loader.ConfigureThreadPool, Sitecore.Support.210408" resolve="true"> <MaxConcurrentRequestsPerCPU>8</MaxConcurrentRequestsPerCPU> <!-- <MaxWorkerThreadsPerCore>20</MaxWorkerThreadsPerCore> --> <MinWorkerThreadsPerCore>15</MinWorkerThreadsPerCore> <!-- <MaxCompletionPortThreadsPerCore>20</MaxCompletionPortThreadsPerCore> --> <MinCompletionPortThreadsPerCore>10</MinCompletionPortThreadsPerCore> </processor> <processor type="Sitecore.Analytics.Pipelines.Loader.StartThreadPoolSizeMonitor, Sitecore.Analytics"> <patch:delete/> </processor> </initialize> </pipelines> </sitecore> </configuration>
※注: このパッチは、ワーカーおよびThreadPoolのIOCPスレッドの最大および最小制限を設定します。なお、このパッチの設定値は一例としてのみ提示されており、最終値は負荷テストの結果をみて各ソリューションごとにチューニングする必要があります。明示的にMaxWorkerThreadsPerCoreおよびMaxCompletionPortThreadsPerCoreパラメータの値を指定している場合、それらの値に特に注意を払って下さい。値が低すぎる場合、余分なCPUリソースがあるにも関わらず空きスレッドが枯渇する可能性があります。