We have a production setup where we have
Squid in the front(caching images, js, css, etc)
Apache httpd in the middle(prefork + mod_rewrite + mod_jk/AJP + mod_deflate + mod_php(few php pages))
Apache tomcat 5.5 at the end serving all the dynamic stuff.
What would be the best way to reduce the overhead of having 3 servers in the request path ?
Wondering if replacing httpd with a faster web server like nginx/lighttpd will help. httpd right now does the job of url rewriting(for clean urls) and talking to tomcat(via mod_jk) and compressing output(mod_deflate) and serving some low traffic php pages. What would be ideal replacement for httpd given that we need these features?
Is there a way to replace (squid + apache) with a single entity that does caching well (like squid) for static stuff, rewrites url, compresses response and forwards dynamic stuff directly to tomcat ? heard abt varnish cache, wondering if it can help.
Optimisation is a 'black' art, so to speak. There are many ways to skin the cat.
You need to identify your bottle-necks before working out how to improve things.
While it is possible to replace all your server software, with alternatives, that will only help if the software was the bottle neck and not something else, e.g. network bandwidth or I/O bandwidth.
You can start by benchmarking your existing setup and tweaking your existing settings to see if they improve things.