I have been evaluating SQUID to deploy in front of a large web site to cache all static content (Images, JS Files, CSS Files, HTML files etc...) for the web site. I used JMeter as a load testing tool to evaluate the scalability of SQUID. This is my current config:- cache_mem - 256MB disk cache - 10MB. I purposely have a very low disk cache so that i can get most out of in-memory caching of static content. I also set content expiry (if not set) for images, JSP files etc to 14400 80% 43200
My load test is extremely simple: I have one thread doing 100 Iterations against the SQUID proxy and against the Apache Web Server directly. For a particular URL and the 45 images referenced by that URL, these are the results i see: Against SQUID - 307 Ms Avg response time. Throughput 90/Minute Against Web App directly - 377 Ms. Avg response time. Througput 84/Minute Now i start to crank up the no of cocurrent clients to 5 users doing 50 iterations. These are the results:- Against SQUID - 1.67 Seconds Avg Response Time. Througput 117/Minute Against Web App directly - 1.64 Seconds Avg Response Time. Thorughput 114/Minute Then i crank up to 10 users doing 50 iterations. These are the results:- Against SQUID - 3.5 Seconds Avg Response TIme. Throughput 110/Minute Against Web App directly - 2.9 Seconds Avg Response TIme. Throughput 111/minute. For these tests i had a 95% Cache Hit ratio on SQUID with around 40% as MEMORY Cache Hits. Why is that the Web application scales better than SQUID? The one thing that stands out is that SQUID is running as one process one thread, whereas the web site is multithreaded. Is there a way for SQUID to spawn more processes/threads? How can i configure SQUID to scale much better?
