Bitcoind becomes non-responsive over JSON-RPC, have to manually restart all the time I run bitcoind on AWS on Ubuntu. The machine has 4Gb of memory and free shows some of it remains free. Enough disk space too.

Yet, I have to manually restart bitcoind quite often, because sending JSON-RPC requests returns a timeout error. That is, at first they do work, but then they don't. No matter what kind of request.

Has anyone ever come across this? Why does it happen? Does anybody have a plausible theory?
Upgrade to the very latest stable version. We saw alot less memory leakage with .10 on ubuntu
run a cron job to restart it every night around 4:00 am est when there are fewest ransactions. This will cut down on memory leakage
make sure your box has at least 4 gigs of ram and a 2 gig swap partition.
give us some more info here. like linux distro, machine stats and what kind of rpc calls u often do.