Beispiel #1
0
        /// <summary>
        /// Configures the threadpool settings based on the details provided in the performance configuration
        /// </summary>
        /// <param name="configuration">The configuration instance that the ThreadPool settings are based on</param>
        public static void ConfigureThreadPool(IPerformanceConfiguration configuration)
        {
            Guard.NotNull(nameof(configuration), configuration);

            ThreadPool.GetMinThreads(out var minimumWorkerThreads, out var minimumCompletionThreads);
            ThreadPool.GetMaxThreads(out var maximumWorkerThreads, out var maximumCompletionThreads);

            if (configuration.MinimumWorkerThreads.HasValue && configuration.MinimumWorkerThreads.Value > 0)
            {
                minimumWorkerThreads = configuration.UseCoreMultiplier ? Environment.ProcessorCount * configuration.MinimumWorkerThreads.Value : configuration.MinimumWorkerThreads.Value;
            }
            if (configuration.MinimumIoCompletionThreads.HasValue && configuration.MinimumIoCompletionThreads.Value > 0)
            {
                minimumCompletionThreads = configuration.UseCoreMultiplier ? Environment.ProcessorCount * configuration.MinimumIoCompletionThreads.Value : configuration.MinimumIoCompletionThreads.Value;
            }
            if (configuration.MaximumWorkerThreads.HasValue && configuration.MaximumWorkerThreads.Value > 0)
            {
                maximumWorkerThreads = configuration.UseCoreMultiplier ? Environment.ProcessorCount * configuration.MaximumWorkerThreads.Value : configuration.MaximumWorkerThreads.Value;
            }
            if (configuration.MaximumIoCompletionThreads.HasValue && configuration.MaximumIoCompletionThreads.Value > 0)
            {
                maximumCompletionThreads = configuration.UseCoreMultiplier ? Environment.ProcessorCount * configuration.MaximumIoCompletionThreads.Value : configuration.MaximumIoCompletionThreads.Value;
            }

            ThreadPool.SetMinThreads(minimumWorkerThreads, minimumCompletionThreads);
            ThreadPool.SetMaxThreads(maximumWorkerThreads, maximumCompletionThreads);
        }
Beispiel #2
0
        /// <summary>
        /// Configures the http settings based on the details provided in the performance configuration
        /// </summary>
        /// <param name="configuration">The configuration instance that the http settings are based on</param>
        public static void ConfigureHttp(IPerformanceConfiguration configuration)
        {
            Guard.NotNull(nameof(configuration), configuration);

            if (configuration.UseNagle.HasValue)
            {
                ServicePointManager.UseNagleAlgorithm = configuration.UseNagle.Value;
            }
            if (configuration.Expect100Continue.HasValue)
            {
                ServicePointManager.Expect100Continue = configuration.Expect100Continue.Value;
            }
            if (configuration.DefaultConnectionLimit.HasValue)
            {
                ServicePointManager.DefaultConnectionLimit = configuration.DefaultConnectionLimit.Value;
            }
        }