[Mono-bugs] [Bug 693810] New: Concurrent requests to ASP.NET MVC 3 web application effectively serialized

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri May 13 17:44:37 EDT 2011


https://bugzilla.novell.com/show_bug.cgi?id=693810

https://bugzilla.novell.com/show_bug.cgi?id=693810#c0


           Summary: Concurrent requests to ASP.NET MVC 3 web application
                    effectively serialized
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.10.x
          Platform: x86-64
        OS/Version: Ubuntu
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: Sys.Web
        AssignedTo: mhabersack at novell.com
        ReportedBy: phillip.sitbon+novell at gmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24
(KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24

Running a request controller blocks the handling of all other controllers. This
was discovered when using JSON to report long-running job progress in a
single-process Lighttpd FastCGI configuration with one backend process. 

Updating "max-procs" to 2 in Lighty allowed for only one additional thread of
concurrency. I tried manually setting the following environment parameters:

                       "MONO_FCGI_MAXCONNS" => "2048",
                        "MONO_FCGI_MAXREQS" => "2048",
                        "MONO_FCGI_MULTIPLEX" => "True"

As well as the following in Web.config:

    <connectionManagement>
      <add address="*" maxconnection="256"/>
    </connectionManagement>

To no avail.

Reducing the scenario down to a simple web app running in XSP produces the same
behavior.

Server info:
 2.6.38-9-server #43-Ubuntu SMP Thu Apr 28 15:40:34 UTC 2011 x86_64 x86_64
x86_64 GNU/Linux

Running Mono 2.10.2

Reproducible: Always

Steps to Reproduce:
1. Create a new ASP.NET MVC 3 (Razor) Web App in VS2010.

2. Make two controllers, with any attached view. In one, put

Thread.Sleep(20000)

And in the other just have it render the view immediately.

3. Before publishing the project for export to Linux, set "Copy Local" on the
following references (not sure if all are needed/used, but it allows it to
load):
  EntityFramework
  System.Data.Entity
  System.Web.Helpers
  System.Web.Mvc
  System.Web.Razor
  System.Web.WebPages
  System.Web.WebPages.Deployment
  System.Web.WebPages.Razor

4. Publish to a folder and then copy to a Linux machine. Run xsp4 --root
/path/to/App

5. Navigate to http://server:port/ViewThatSleeps

6. Immediately try to load up http://server:port/ViewThatDoesNotSleep while the
other controller is still executing Thread.Sleep.



3.
Actual Results:  
http://server:port/ViewThatDoesNotSleep will not load until
http://server:port/ViewThatSleeps has completed and loaded.

Expected Results:  
http://server:port/ViewThatDoesNotSleep loads while
http://server:port/ViewThatSleep is still loading and executing Thread.Sleep.

Reproduced in Windows 7, VS2010 SP1, ASP.NET Dev Server for multiple web app
scenarios.

Most of the Web.config, besides the changes I mentioned above, are defaults
generated by VS2010.

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list