[Server-devel] Datastore & backup - request for help

Martin Langhoff martin.langhoff at gmail.com
Thu May 22 00:16:35 EDT 2008

On Thu, May 22, 2008 at 3:43 PM, John Watlington <wad at laptop.org> wrote:
> That question was asked at the school server presentation
> today, by someone from Teaching Matters (IIRC) who knew
> of you.   They commented that 1GB seemed very low for 100
> students where Moodle was involved.

That's for an untuned setup. Once you get rid of synchronous stuff
(moodle-based chat) usage of Moodle is very async (forums, wikis)
except for a few cases:

 - "everyone do this mod/quiz exercise/exam... clock starts counting now!"
 - everyone download this now
 - everyone do this mod/scorm exercise now

Which are all variations on a theme. The "everyone" above is a group
that I assume will max at around 40 (a classroom), so our interesting
"simultaneous users" scenarios are in multiples of 40.

For moodle and similar webapps, the main problem is apache/php memory
footprint, which some back-of-the-envelope numbers say are:

 - A fixed footprint for PostgreSQL. I'd like to tune Pg to use 10% of
phys RAM (~100MB in a 1GB machine). But we might be able to drop that
to 5% as we know our data sizes won't be large. (Of course, Pg lean on
kernel buffers for indexes and such.) I need to test Pg perf with
various tunings there.

 - Apache/PHP shared mem will be ~5MB, unshared will be anywhere
between 12 and 25MB each process. Even with 40 "simultaneous" users
logged in, I doubt we'll have more than 20 apache processes busy at
any given time (we will need a memory-efficient reverse proxy in front
to offload serving to slow clients).

Memory *is* tight for the "we all now click on the big red button"
scenario, and I'll do some hard-nosed tuning to help cope with that.
For normal usage... we're way overpowered.

And here I have to agree with jg, a proxy (reverse and fwd) that is
smart wrt memory mgmt will save the day. My former colleages @
Catalyst are doing more tuning of Moodle's caching headers, so the
reverse proxy can serve more stuff without even looking at Apache.

As a side note - many parts of our infrastructure (of _any_ network
infrastructure) break in the "we all now click" scenario. In the past,
when I had opportunities to do train-the-trainer sessions, I used them
to explain how bad that is for network services, and how a little bit
of indirection - tell users to "read the instructions and click on the
button", for example - staggers the clicks enough that "everything
just works".

Modern networks aren't built to deal with thundering herds, unfortunately.

> I pointed out that you were on the case, and they were mollified.


> Out of curiosity, what is the testing procedure for this ?

I usually do a mix of

 - ab on some "heavy" URLs
 - use jmeter to collect a few real sessions and then replay them on
load-test mode


 martin.langhoff at gmail.com
 martin at laptop.org -- School Server Architect
 - ask interesting questions
 - don't get distracted with shiny stuff - working code first
 - http://wiki.laptop.org/go/User:Martinlanghoff

More information about the Server-devel mailing list