mysql queries takes about 30 seconds to complete on the peak memory usage
Coupled with the stats provided suggest that you might in fact need to optimize you Apache and MySQL configs, perhaps re-evaluate your DB schema? It's not just about raw power.
How long is a piece of string? That's how much RAM you need! (Not infinity, for any mathematician reading this!).
So your DB is 2GBs; Worlds roughest figures here:
- It would be nice to get most of that data into memory, so 2GB
- Plus some extra for future growth (only you know how quickly your site is growing), so 2.5GBs
- Also some extra beyond the data to store some cached results and query sets etc
- Plus some for the OS and applications
I would just round that strait up to 3GBs.
Any good VPS provider will let you scale memory up AND down (if not, just move provider) on a 30 day basis so it wouldn't cost you the earth if you over shoot, just 1 month billing.
Another option to consider is tuning your VM. Change the swapiness and cache ratio etc. Look into those virtual memory manager options. They are well documented on line, as is Apache and MySQL tuning.