On 7/03/2014 11:53 p.m., Robin Gwynne wrote: > My copy and paste was not correct in the original post. I have corrected my conf file below. > > Robin > > -----Original Message----- > From: Robin Gwynne [mailto:Robin.Gwynne@xxxxxxxx] > Sent: 07 March 2014 10:46 > To: squid-users@xxxxxxxxxxxxxxx > Subject: Squid Cache NEVER HIT's Only get TCP_MISS/200 and TCP_MISS/304 > > > I am struggling with my Squid Reverse proxy cache. I have been all round the forums with no success in getting my Squid Proxy Cache to actually do any caching. I am running Squid 3.1 on Debian 6 > > Can anyone suggest what might be wrong with my Squid.conf file? I have verified that the correct permissions exist on the cache folder, cache folders are initialized, no errors are returned from running "squid3 -k parse" > > Regards, > > Robin > > --------------Squid.conf---------------------- > http_port 80 accel ignore-cc defaultsite=richmedia.mydomain.com > cache_mem 500 MB > maximum_object_size_in_memory 50000 KB > cache_dir ufs /var/spool/squid3 10000 32 512 max-size=10485760 > minimum_object_size 2 KB maximum_object_size 5000 MB So you to get thsis straight: up to 50MB objects are allowed to cache in memory up to 10MB are allowed to cache on disk nothing smaller than 2KB is allowed to be cached > refresh_pattern -i \.(gif|png|jpg|jpeg|ico|bmp|xml)$ 260000 90% 260009 > refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv|mpg|wma|ogg|wmv|asx|asf)$ 260000 90% 260009 > refresh_pattern . 260000 90% 260009 > acl xdomain urlpath_regex ^/crossdomain.xml > cache_peer 94.125.16.13 parent 80 0 no-query no-digest originserver name=server1 > cache_peer_access server1 deny xdomain > cache_peer 162.13.17.12 parent 8080 0 no-query no-digest originserver name=server2 > cache_peer_access server2 allow xdomain > cache_peer_access server2 deny all > cache allow all > http_access allow all Security note: The way you have designed the http_access and cache_peer_access rules means that almost all attack traffic delivered to your Squid will be relayed through the server1. One of the benefits of having a reverse-proxy is to protect the backend servers against those types of request. I highly recommend adding a dstdomain ACL defining what domain(s) you host and using that for http_access allow instead of acccepting everything. > ------------------Access.log output---------------------- > 1394187754.972 108 195.157.14.29 TCP_MISS/200 118376 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > 1394187754.992 30 62.232.36.16 TCP_MISS/200 1004 GET http://richmedia.mydomain.com/favicon.ico - FIRST_UP_PARENT/server1 image/x-icon > 1394187755.163 94 62.232.36.16 TCP_MISS/200 68954 GET http://richmedia.mydomain.com/media/webinar/supplier/I-Holland-2013Webinar/slides/Slide00029.swf - FIRST_UP_PARENT/server1 application/x-shockwave-flash > 1394187765.378 9794 195.157.14.29 TCP_MISS/200 1696587 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > 1394187768.885 136 195.157.14.29 TCP_MISS/200 169077 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > 1394187782.779 38 62.232.3.16 TCP_MISS/200 1611 GET http://richmedia.mydomain.com/media/webinar/supplier/I-Holland-2013Webinar/slides/Slide624911.htm - FIRST_UP_PARENT/server1 text/html > 1394187783.461 35 79.171.8.14 TCP_MISS/200 8811 GET http://richmedia.mydomain.com/media/webinar/supplier/Kampffmeyer-14Nov13/index.htm - FIRST_UP_PARENT/server1 text/html > 1394187788.851 19370 195.157.14.29 TCP_MISS/200 3110156 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > 1394187792.101 66784 195.157.14.29 TCP_MISS/206 3961057 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > 1394187793.415 100 195.157.14.29 TCP_MISS/200 154126 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > 1394187807.537 13461 195.157.14.29 TCP_MISS/200 2109420 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > 1394187819.670 3 95.131.10.18 TCP_MISS/200 607 GET http://richmedia.mydomain.com/crossdomain.xml - FIRST_UP_PARENT/server2 application/xml > 1394187838.664 144 195.157.14.29 TCP_MISS/200 115568 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > 1394187855.303 35596 95.131.10.18 TCP_MISS/200 75550871 GET http://richmedia.mydomain.com/content/download/424921/8844388/file/Apprenticeships.mp4 - FIRST_UP_PARENT/server1 video/mp4 > 1394187867.488 28168 195.157.14.29 TCP_MISS/200 3961100 GET http://richmedia.mydomain.com/content/download/383683/8226052/file/Tim%20Storer.mp3 - FIRST_UP_PARENT/server1 audio/mpeg > The response object sizes are constantly changing!! That means any one of a few things (in order of suspected likelihood): * the requests are Range requests - which your Squid is not able to cache. - check for Range headers from the cleients then look into range_offset_limit, quick_abort_min/max etc. ==> your log has one entry "TCP_MISS/206" which is a response to a Range request. * the objects being fetched might actually be different objects - so they actually *are* always MISS on the previously cached object. - sometimes this is caused by UA encoding. Check for Accept-Encoding header differences and see if dropping that header on traffic to the peer helps improve the HIT rate. * the clients might be abandoning the connections before response completes - the quick_abort_* settings can help here. But YMMV with large objects. Amos