Okay, so I run two very small sites on a VPS (both are Wordpress using W3 Total Cache) running Apache. I've seen a prior thread very similar to what is happening with my server, but I want to approach the topic differently.

First of all, I want to try and identify the culprit causing the memory usage, but before I get into that, here are a few key details:
2 GHz CPU with 300 MB of RAM
It has 2 wordpress sites, the first had 1224 entries in the access.log for today and the second had a dismal 406 entries (let's face it both are dismal).
The entries for the first wordpress site are primarily trying to hack its way in by guessing an account to automatically login to wp-login.php, the latter site all seem to be legitimate requests for access.

Lastly, the requests are for example.net which is a mirror domain for mydomain.com. example.net doesn't really server any web presence purpose, so I could probably block all requests to that domain and that would kill all of the wp-login.php attacks (example.net is primarily kept for e-mail purposes).

Okay, so what that out of the way, I'm trying to figure out how to identify what is causing the spike in memory usage. Supposedly it spiked at 1:00 AM PST, so they automatically bumped the memory limit by 25% to handle the excess load. They are telling me to throw more RAM on it, but that is the dumbest thing I've heard of. To quote my reply: "That's like stating to throw more wood on a fire because the flame is too high. Sure it will lower the flame for a while, but once it catches up, its not much more fiercer than it was prior."

I really need to identify the cause for the spike. Considering my fire analogy, the reason for the increase flame could be an accelerant (think pine cone, lint, paper, etc) or a pocket of air that became available, feeding the flame. You have to analyze the fire to figure out which it is (sometimes waiting till the fire has died to see remnants of the cause).

So what tools/processes do you use to identify high memory usage on your web servers?