: >> Aha! I bet that the full Query object became a lot more complicated : >> between Solr 1.1 and 1.3. That would explain why we did 4X as much GC : >> after the upgrade.
I don't thinkg the Query class implementations themselves changed in anyway that would have made them larger -- but if you switched from the standard parser to dismax parser, or started using lots of boost queries, or started using prefix or wildcard queries, then yes: the Query objects used would have gotten bigger. : Another approach is to get fancy with the load balancing and always : send the same query back to the same server. That increases the : effective cache size by the number of servers, but it forces a : simplistic round-robin load balancing and you have to be careful : with down servers to avoid blowing all the caches simultaneously. at a certain point, if you have enough machines, a two tiered LB situation starts to be worth consideration. tier#1 can use hashing on the querystring to pick which tier#2 cluster to send the query to. each tier#2 cluster can be fronted by a load balancer that picks the server to use based on whatever "workload" metric you want. a small percentage of machines in any given cluster (or in every cluster) can be down w/o worrying about screwing up the caches or adversly afecting traffic -- you just can't let an entire cluster be down at once. -Hoss