2012-01-21 3 views
1

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

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

ответ

2

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

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

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

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

Эта настройка - mos на основе этой статьи:

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