Ограничения сервера и подключения для длительного опроса в ASP.NET MVC 1 в .NET 3.5 SP1 с использованием асинхронных контроллеров из MVC Futures - PullRequest
4 голосов
/ 01 августа 2011

Я пытаюсь встроить функцию длинного опроса ("reverse ajax", "http push") в существующее веб-приложение ASP.NET MVC 1, работающее в .NET 3.5 SP1 .Поскольку у этих приложений тысячи одновременно работающих пользователей, и все они будут использовать функцию длинного опроса, Я беспокоюсь, что столкнусь с ограничениями сервера и соединения, которые трудно предвидеть и тестировать.

Прочитав статью Томаса Марквардта об использовании потоков ASP.NET в IIS 7.0 и 6.0 , на которую ссылаются во многих вопросах о длительных опросах здесь и в других местах, кажется что настройки по умолчанию для Windows Server 2008 R2 (с IIS 7.5), на котором запущено приложение ASP.NET MVC 1 (в .NET 3.5 SP1), где функция длинного опроса реализована с использованием асинхронных контроллеров из MVCФьючерсы не смогут обслуживать тысячи пользователей.

Первый виновник, по-видимому, maxConcurrentRequestsPerCPU, который в .NET 3.5 SP1 установлен на 12 по Марквардту.Это означает, что тысячи одновременных длинных опросов потребуют сотни процессоров, верно?Так как независимо от того, используются ли асинхронные контроллеры, длительный опрос все еще является HTTP-запросом.Мне нужно увеличить это. Правильно ли мое понимание здесь?

Поскольку я использую асинхронные контроллеры, я предполагаю, что мне не нужно будет изменять количество одновременных рабочих потоков на процессор, так как поток ожидаетдля длительного опроса, чтобы вызвать, будет размотан. Правильно ли мое понимание здесь? Или это зависит от того, как именно выполняется "ожидание" в методе длинных опросов?(Я планировал использовать события.)

В дополнение к этому, есть ли другие ограничения, с которыми я столкнусь?Я не хочу начинать случайное увеличение значений в machine.config или aspnet.config (или даже web.config), и я бы хотел оставить autoConfig из processModel, если это возможно.

(я прочитал все вопросы здесь, но никто конкретно не углубляется в детали, относящиеся к этому, предположительно, поскольку они зависят от количества процессоров, версии CLR и т. Д.)

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

1 Ответ

1 голос
/ 14 марта 2012

Я думаю, вы неправильно понимаете суть асинхронных контроллеров.Асинхронные контроллеры используются для длительных веб-вызовов (примечание: не длительных опросных вызовов).Это означает, что если для обработки / возврата действия требуется время, оно будет обработано асинхронно, немедленно возвращая управление клиенту.

Если вы хотите реализовать длинный опрос, используйте SignalR

http://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx

...