It's hard to say what's causing the problem.
Until you run top on it and see.
Most of the time if it's a db problem, it's one query that's usually the issue. One query that does something a little bit inefficient can slow the whole machine to a crawl.
If you can't run top, you can do some simple, cheap query profiling.
Stick some lines like this in your code:
print "<!-- ";
print microtime(true);
print "-->";
and then you can view the source to see the timestamps of each piece of code. wrap your mysql queries in the above and you can then see how long a query is taking.
Also, look at turning on mysql logging of long running queries and you can work on making them faster. If mysql is the problem.