[Mono-aspnet-list] mod_mono parallel requests dont’t run in parallel

Marek Habersack grendel at twistedcode.net
Wed Oct 14 13:47:29 EDT 2009

sirmak wrote:
> Marek Habersack-6 wrote:
>> We have tested Mono's ASP.NET under very high load and it scaled pretty
>> well. Our garbage collection 
>> is not as good as we'd wish it to be, but overall the performance was more
>> than satisfactory.
> Hi Marek,

> Is the current GC fills up most of the memory (maybe in x hours) under high
> load ? or is it safe to run an high load web app for a week ? If it fills up
> memory, how many hours/minutes it took to fill it under high load in your
> tests ?
GC never fills up memory, it reclaims it. Our GC works quite reliably, but it's just not very fast 
(and it's a conservative one). There's a certain amount of memory it doesn't give back to the system 
- this is done to cater to application's allocation needs faster. In our tests the memory 
utilization was pretty stable once it reached a certain level specific for the test application. I 
run my personal blog with mono and observe the same behavior. Of course, it all depends on memory 
patterns of your application - if it allocates a lot of memory in short periods of time, then it is 
possible you can find yourself in an OOM situation. It is also possible that either your application 
or Mono may leak memory - if you notice a pattern in which memory usage rises by the same amount 
which is never reclaimed, then this is the situation.
It's also worth remembering the way Unix memory usage should be read. You have VSS (Virtual Set 
Size) which is memory mapped by the process (i.e. reserved for current or future usage) - this kind 
of memory may report very high figures which do NOT represent your application's actual memory 
usage. Then there is RSS (Resident Set Size) which is memory actually committed (i.e. allocated and 
in use) by your application - this is a rough approximation of your application's memory usage. RSS 
can be subdivided into shared and writable/private memory chunks - the former is the actual amount 
of RAM your application uses. Shared memory is the part occupied by shared libraries (common 
code/data). If you want to check how much memory your application uses, issue the following command 
in terminal:

   pmap -d <pid_of_your_app>

The last line of the output will contain the figures I described above.

> And will the new GC really come with the 2.8 version ?
That's quite possible, but no promises.

> thanks
> sirmak

More information about the Mono-aspnet-list mailing list