[Mono-aspnet-list] mod_mono parallel requests dont’t run in parallel
grendel at twistedcode.net
Wed Oct 14 13:47:29 EDT 2009
> 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
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.
More information about the Mono-aspnet-list