|
@@ -1,3 +1,6 @@
|
|
|
+using System;
|
|
|
+using System.Configuration;
|
|
|
+using System.Threading;
|
|
|
using System.Web;
|
|
|
using System.Web.Mvc;
|
|
|
using System.Web.Routing;
|
|
@@ -25,6 +28,7 @@ namespace Benchmarks.AspNet
|
|
|
{
|
|
|
Routes();
|
|
|
Views();
|
|
|
+ Threads();
|
|
|
}
|
|
|
|
|
|
private void Routes()
|
|
@@ -57,6 +61,25 @@ namespace Benchmarks.AspNet
|
|
|
ViewEngines.Engines.Add(new RazorViewEngine { ViewLocationFormats = new[] { "~/Views/{0}.cshtml" } });
|
|
|
}
|
|
|
|
|
|
+ private void Threads()
|
|
|
+ {
|
|
|
+ // To improve CPU utilization, increase the number of threads that the .NET thread pool expands by when
|
|
|
+ // a burst of requests come in. We could do this by editing machine.config/system.web/processModel/minWorkerThreads,
|
|
|
+ // but that seems too global a change, so we do it in code for just our AppPool. More info:
|
|
|
+ //
|
|
|
+ // http://support.microsoft.com/kb/821268
|
|
|
+ // http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx
|
|
|
+ // http://blogs.msdn.com/b/perfworld/archive/2010/01/13/how-can-i-improve-the-performance-of-asp-net-by-adjusting-the-clr-thread-throttling-properties.aspx
|
|
|
+
|
|
|
+ int newMinWorkerThreads = Convert.ToInt32(ConfigurationManager.AppSettings["minWorkerThreadsPerLogicalProcessor"]);
|
|
|
+ if (newMinWorkerThreads > 0)
|
|
|
+ {
|
|
|
+ int minWorkerThreads, minCompletionPortThreads;
|
|
|
+ ThreadPool.GetMinThreads(out minWorkerThreads, out minCompletionPortThreads);
|
|
|
+ ThreadPool.SetMinThreads(Environment.ProcessorCount * newMinWorkerThreads, minCompletionPortThreads);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void Dispose()
|
|
|
{
|
|
|
}
|