In terms of cost-effectiveness, the following order of performance aspects are the best to address:
1. Design & architecture of the apps
2. JVM and Java compiler. Note that these two do not have to be the same.
3. Hardware: CPU, RAM, Disks, Network speed.
4. Java code.
RAM is certainly in there, and I have to admit that I've never been asked to tune a server with less than 2 GB of RAM, but then they've all been Solaris/HPUX/AIX boxes. I've never tuned a Linux server.
From this early startup stage, I find it really difficult to suggest things. Normally you have applications and server products. Each has their foibles, and every product Shailesh listed has a performance tuning section in their products and probably on their website. I link to a couple on the tips page at
my site: search for "web serv" on that page.