Server and connection restrictions for long polling in ASP.NET MVC 1 in .NET 3.5 SP1 using asynchronous controllers from MVC Futures

I am trying to retro-install a long poll ("reverse ajax", "http push") into an existing ASP.NET MVC 1 web application running on .NET 3.5 SP1 . Since these applications have thousands of concurrent users, and all of them will use the long polling function, I am worried that I will encounter server and connection restrictions that are difficult to view and verify.

After reading the article, Thomas Marquardtโ€™s article on using the ASP.NET theme for IIS 7.0 and 6.0 , which many of the questions about the lengthy survey link to here and elsewhere, seems that the default settings for Windows Server 2008 R2 (with IIS 7.5) that work with the application ASP.NET MVC 1 (in .NET 3.5 SP1), where the long polling function is implemented using asynchronous controllers from MVC Futures will not be able to serve thousands of users.

The first culprit is maxConcurrentRequestsPerCPU , which in .NET 3.5 SP1 is set to 12 according to Marquardt. This means that thousands of parallel long polls will require hundreds of processors, right? Since using asynchronous controllers or not, lengthy polling is still an HTTP request. I need to increase this. Do I understand this correctly?

Since I use asynchronous controllers, I assume that I will not need to change the number of concurrent worker threads per processor, since a thread waiting to trigger a long poll will be unwound. Do I understand this correctly? Or does it depend on how exactly the โ€œwaitโ€ is performed in the long polling method? (I planned to use events.)

In addition to this, are there other restrictions that I have encountered? I donโ€™t want to start randomly increasing the values โ€‹โ€‹in machine.config or aspnet.config (or even web.config ), and I would like to save the autoConfig processModel if possible.

(Here I read all the questions, but no one can talk about it in detail, apparently because it depends on the number of processors, CLR version, etc.)

Thanks in advance!

+4
source share
1 answer

I think you misunderstand the essence of asynchronous controllers. Asynchronous controllers are used for long web calls (note: no long calls). This means that if an action takes time to process / return, it will be processed asynchronously, immediately returning control to the client.

If you want to use long polling, use SignalR

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

+1
source

All Articles