2012-01-21 113 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