2010-08-10 2 views
5

У нас есть сервер Remoting .NET 2.0, работающий в режиме Single-Call в IIS7. Он имеет два API, например:Увеличение одновременных запросов на приложение .NET Remoting в IIS

  1. DoLongRunningCalculation() - имеет много запросов к базе данных и может занять много времени.
  2. HelloWorld() - просто возвращает «Hello World».

Мы попытались стресс-тест сервер удаленного взаимодействия (на машине Windows 7) в худшем случае, облучая его случайным образом с двумя вызовами API и обнаружил, что, если мы выходим за пределы 10 клиентских запросов, ответ HelloWorld (который обычно составляет менее 0,1 с), начинает длиться дольше и дольше в течение многих секунд. Наша цель состоит в том, что мы не хотим иметь длительные удаленные вызовы для блокировки коротких вызовов. Вот счетчики производительности для ASP.NET V2.0.50727, если у нас есть 20 клиентских потоков, выполняющихся:

  1. запросы QUEUED: 0
  2. Выполняется запросов: (Макс: 10)
  3. рабочих процессов Продолжительность: 0
  4. Pipeline Режим Instance: (Макс: 10)
  5. Запросы в очереди Application: 0

Мы пытались установки maxConcurrentRequestsPerCPU на "5000" в REGIST ry в блоге Томаса: ASP.NET Thread Usage on IIS 7.0 and 6.0, но это не помогло. На основании приведенных выше данных, представляется, что число одновременных запросов застревает на 10.

Итак, вопрос:

  1. Как мы идти о повышении одновременных запросов? Основная цель заключается в том, что мы не хотим иметь длительные удаленные вызовы для блокировки коротких вызовов.
  2. Почему Max Requests Выполнение всегда застряло в 10?

Заранее спасибо.

ответ

2

Windows 7 имеет ограничение на 20 входящих соединений. XP и ранее были ограничены до 10 (не уверены в Vista). Вероятно, это является причиной снижения производительности. Попробуйте выполнить тестирование на реальной серверной ОС, у которой нет произвольного ограничения на соединение.

+0

Собственно, то, что мы наблюдали, немного отличается. Ограничение соединения для Windows 7 составило 10; потому что, когда мы выходили за рамки этого, мы видели ухудшение производительности. Вы правы, на сервере windows2008 производительность была лучше, но мы еще не смогли ее количественно оценить. – hpatil

+4

На самом деле, ограничение на подключение 20 накладывается Windows. У самого IIS все еще есть ограничение на 10 соединений, что объясняет ваши результаты. Ограничение на 10 соединений устанавливается всеми экземплярами IIS, запущенными в несерверных операционных системах (чтобы избежать попыток пользователей обслуживать сайты без покупки серверной ОС) – Chris

Смежные вопросы