2012-01-21 110 views
1

寻求优化Azure上托管的WCF Rest服务的性能。服务从SQL Azure表中检索数据,在某些情况下从Azure表存储中检索数据。他们都在公共端点上。WCF休息服务defaultconnectionlimit

问题 - 在WebRole.cs我可以看到ServicePointManager.DefaultConnectionLimit设置为2 所有服务的InstanceContext模式是PerCall。在这种情况下,将ServicePointManager.DefaultConnectionLimit更改为12会在性能方面产生什么影响?

回答

2

这是一个复杂的问题,我的理解,这也部分地依赖于:

  • CPU的物理和逻辑属性
  • 过程模型请求队列限制
  • 过程模型最大IO线程
  • 每个CPU的最大并发请求数
  • 每个CPU的最大并发线程数

我不会假装知道这件事,我真的不知道。但我试图了解它是如何工作的。从我可以聚集我使用此设置(我给绝对没有保证,这是最好的设置):

RuntimeConfiguration.ProcessModelRequestQueueLimit = 5000 * Environment.ProcessorCount RuntimeConfiguration.ProcessModelMaxIoThreads = 100 * Environment.ProcessorCount HostingEnvironment .MaxConcurrentRequestsPerCPU = 5000 HostingEnvironment.MaxConcurrentThreadsPerCPU = 0 System.Net.ServicePointManager.DefaultConnectionLimit = Int32.MaxValue(好吧,其实我只用48个大气压这里,因为它似乎足以让我的目的,是要快得多开始)

这个设置是mos tly基于这篇文章:

http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx