How much RAM do you need? Nowadays,
chances are that you will
hear: "Memory is cheap, the more you buy the
better." But how much is enough? The answer is
pretty straightforward: you do not want your machine to
swap! When the
CPU needs to write something into memory, but memory is already full,
it takes the least frequently used memory pages and swaps them out to
disk. This means you have to bear the time penalty of writing the
data to disk. If another process then references some of the data
that happens to be on one of the pages that has just been swapped
out, the CPU swaps it back in again, probably swapping out some other
data that will be needed very shortly by some other process. Carried
to the extreme, the CPU and disk start to thrash hopelessly in
circles, without getting any real work done. The less RAM there is,
the more often this scenario arises. Worse, you can exhaust swap
space as well, and then your troubles really start.

How do you make a decision? You know the highest rate at which your
server expects to serve pages and how long it takes on average to
serve one. Now you can calculate how many server processes you need.
If you know the maximum size to which your servers can grow, you know
how much memory you need. If your OS supports memory sharing, you can
make best use of this feature by preloading the modules and scripts
at server startup, so you will need less memory than you have
calculated.

Do not forget that other essential system processes need memory as
well, so you should not only plan for the web server but also take
into account the other players. Remember that requests can be queued,
so you can afford to let your client wait for a few moments until a
server is available to serve it. Most of the time your server will
not have the maximum load, but you should be ready to bear the peaks.
You need to reserve at least 20% of free memory for peak situations.
Many sites have crashed a few moments after a big scoop about them
was posted and an unexpected number of requests suddenly arrived. If
you are about to announce something cool, be aware of the possible
consequences.