Patrik Ellrén wrote:
We have a setup with a number of identical application servers running on Windows 2003 Server. On each server there is an instance of Squid (2.6 stable 18) that runs as an accelerator. The accelerator mode seems to work fine when each Squid instance is only accelerating "its own" application server but we would like the Squids to run as siblings and we have not been able to get it to work.
Even though the objects are cached by Squid on one machine calls from a sibling generates a combination of:
UDP_HIT/000
TCP_MISS/504
It looks like the ICP call indicates a hit but when a Squid tries to retrieve the cached object it is not found in the cache. The max-age and expire headers are set to allow caching for weeks (and it does work when the Squids are accelerating only its own origin server), cache-control is set to public and no other headers have been set.
If we add allow_miss for the cache_peer tags then the objects will be retrieved but they will come from the sibling's origin server and not from the cache so it looks like the communication works.
Does anyone have an idea what could cause this behaviour?
Random wild guesses:
- The sibling has a '504 timeout' error object cached for that URL.
- The sibling has the object, UDP gets through but TCP connection is
firewalled.
- The ICP request does not match the HTCP request (ie the HTCP is
looking for a specific object, but the ICP doesn't have the right Vary
setting passed on to the sibling.)
- You have an old cache-digest and the sibling has expired the object
to make new space
(don't ask me why, all a wild guess remember).
Amos
--
Please use Squid 2.6.STABLE19 or 3.0.STABLE4