Put your site behind an origin-pull CDN (Cloudflare springs to mind as one option, there are others.)
in normal times a php page renders in 1-2 sec, which is ok.
No it's not.
Optimise your code so that it doesn't take up to two seconds to generate the page.
Then cache all the things.
- Cache page requests with Varnish
- Cache Database lookups with Memcached.
- Cache images on a CDN.
- Cache PHP level with APC or eAccelerator (or similar opcode cache)
- Cache whole pages on a CDN too, for that matter.
If you haven't already, spin your database server off onto a separate server, give it a metric pantload of memory, and uber-fast disks, then cache the hell out of your tables. Magento is a slut when it comes to joins and so on, so you'll need your database server to be painfully fast.
So that when a user views your site, the content will be pulled out of a cache somewhere and not have to be generated every time.
I took the liberty of running Yslow against your site. Here's a summary of the findings (although, you should do this yourself..)
- Make fewer HTTP requests. Basically you should combine your javascript and CSS files into one, so that you reduce the overhead of having to make multiple requests.
- Use a Content Delivery Network (CDN). I've already said this ^^above^^, but Yslow tells me that there are 60 static components not on a CDN. 1.4MB of these are coming from www.brainyoo.de. Which brings me on to..
- Move assets to multiple cookie-free domains. 60 assets are being loaded from the same domain as the rest of the site. Which means that the browser has to wait for each one to load before loading the next. A common way to get around this is to put static assets on separate, cookie-less domains (so that the request is smaller, faster, and doesn't contain the cookie info).
- Move Javascript to the bottom of the document. Considered best practice for scalable, fast websites.
- Minify Javascript and CSS. Seriously. You're sending nearly a megabyte of JS and CSS, that can be minified and...
- Compress components with Gzip. There are 39 plain-text components that could be gzipped.
- Add Expires headers. There are 63 static files without far-future expiration dates, so they're not being effectively cached by the browser.
Total YSlow Grade D. I'm starting to wonder if your problems aren't entirely server-side, but could do with a damn good fiddling with, and get your YSlow rating up. Because that way, a) less traffic served from your Apache server. b) It's quicker to load, so your visitors aren't locking up an Apache process for as long.