WCF остальные службы defaultconnectionlimit - PullRequest
1 голос
/ 21 января 2012

Хотите оптимизировать производительность служб WCF Rest, размещенных в Azure. Службы получают данные из таблиц SQL Azure и, в некоторых случаях, из хранилища таблиц Azure. Они все на публичных конечных точках.

Вопрос - В WebRole.cs я вижу, что ServicePointManager.DefaultConnectionLimit имеет значение 2. Режим экземпляра-контекста всех сервисов: PerCall . В этом случае изменение значения ServicePointManager.DefaultConnectionLimit на 12 может повлиять на производительность?

1 Ответ

2 голосов
/ 23 января 2012

Это сложная проблема, и, насколько я понимаю, она также частично зависит от:

  • физических и логических атрибутов ЦП
  • Предел очереди запросов модели процесса
  • Максимальное количество потоков ввода-вывода в модели процесса
  • Максимальное количество одновременных запросов на процессор
  • Максимальное количество одновременных потоков на процессор

Я не претендую на то, что знаю об этом много, на самом деле я не знаю,Но я пытаюсь понять, как это работает.Из того, что я могу собрать, я использую эту настройку (я даю абсолютно никаких гарантий, что это лучшая установка):

RuntimeConfiguration.ProcessModelRequestQueueLimit = 5000 * Environment.ProcessorCount RuntimeConfiguration.ProcessModelMaxIoThreads = 100 *Environment.ProcessorCount HostingEnvironment.MaxConcurrentRequestsPerCPU = 5000 HostingEnvironment.MaxConcurrentThreadsPerCPU = 0 System.Net.ServicePointManager.DefaultConnectionLimit = Int32.MaxValue (ну, на самом деле я использую только 48 *), так как для моих целей это достаточно быстро, так как для моей цели это кажется достаточно быстрым, так как для моей цели это кажется достаточно быстрым, и для моей цели это кажется достаточно быстрым для моих целей*

Эта установка в основном основана на этой статье:

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

...