Re: [squid-users] Loads of TCP_MISS on files that should be hit

From: Victor <victor.lavaud_at_gmail.com>
Date: Wed, 09 Jan 2013 12:37:29 +0100

Okay, I understand your point about Vary: User-Agent and have forwarded the information to the webmaster, however this cannot be the source of my TCP_MISSes as I only use wget to carry out the tests.
I have added the debug options you suggested, and removed the parameters on my refresh_pattern line, so that it now looks like:

refresh_pattern -i \.png 12960 90% 12960

cache.log reads this when I try and wget epo.png:

2013/01/09 12:29:58.955 kid1| ctx: exit level 0
2013/01/09 12:29:58.955 kid1| refresh.cc(539) getMaxAge: getMaxAge: 'http://flags.tatoeba.org/img/flags/epo.png'
2013/01/09 12:29:58.993 kid1| ctx: enter level 0: 'http://flags.tatoeba.org/img/flags/epo.png'
2013/01/09 12:29:58.993 kid1| refresh.cc(246) refreshCheck: refreshCheck: 'http://flags.tatoeba.org/img/flags/epo.png'
2013/01/09 12:29:58.993 kid1| refresh.cc(261) refreshCheck: refreshCheck: Matched '\.png 777600 90%% 777600'
2013/01/09 12:29:58.993 kid1| refresh.cc(263) refreshCheck: age: 60
2013/01/09 12:29:58.993 kid1| refresh.cc(265) refreshCheck: check_time: Wed, 09 Jan 2013 11:30:58 GMT
2013/01/09 12:29:58.993 kid1| refresh.cc(267) refreshCheck: entry->timestamp: Wed, 09 Jan 2013 11:29:58 GMT
2013/01/09 12:29:58.993 kid1| refresh.cc(170) refreshStaleness: FRESH: expires 1389311980 >= check_time 1357731058
2013/01/09 12:29:58.993 kid1| refresh.cc(287) refreshCheck: Staleness = -1
2013/01/09 12:29:58.993 kid1| refresh.cc(372) refreshCheck: refreshCheck: object isn't stale..
2013/01/09 12:29:58.993 kid1| refresh.cc(374) refreshCheck: refreshCheck: returning FRESH_EXPIRES
2013/01/09 12:29:58.994 kid1| http.cc(466) cacheableReply: YES because HTTP status 200

Yet access.log still returns a miss:
1357731100.092 129 127.0.0.1 TCP_MISS/200 618 GET http://flags.tatoeba.org/img/flags/epo.png - HIER_DIRECT/86.65.39.22 image/png

On mer., 2013-01-09 at 23:22 +1300, Amos Jeffries wrote:
> On 9/01/2013 9:43 p.m., Victor wrote:
> > Hello
> >
> > After spending hours configuring squid 3.2.5, I only get TCP_MISS. To
> > narrow the problem, I will focus on one PNG file that I want cached, but
> > note that I get TCP_MISS for 99% of my requests, not only PNG files.
> > Refreshing doesn’t help, it never gets a TCP_HIT.
> >
> > 1357671721.566 127 127.0.0.1 TCP_MISS/200 618 GET
> > http://flags.tatoeba.org/img/flags/epo.png - HIER_DIRECT/86.65.39.22
> > image/png
> >
> > in cache.log, I get:
> <snip>
> > 2013/01/09 09:27:04.757 kid1| http.cc(732) processReplyHeader:
> > HTTP Server local=192.168.1.13:56799 remote=86.65.39.22:80 FD 13
> > flags=1
> > 2013/01/09 09:27:04.757 kid1| http.cc(733) processReplyHeader:
> > HTTP Server REPLY:
> > ---------
> > HTTP/1.1 200 OK
> > Date: Wed, 09 Jan 2013 08:27:24 GMT
> > Server: Apache/2.2.16 (Debian)
> > Accept-Ranges: bytes
> > Content-Length: 219
> > Vary: User-Agent
> > Expires: Fri, 10 Jan 2014 00:00:00 GMT
> > Cache-Control: public, no-transform
> > Content-Type: image/png
> > Via: 1.1 tatoeba.fsffrance.org
> > Keep-Alive: timeout=15, max=100
> > Connection: Keep-Alive
> >
> > �PNG
> > 
> >
>
> This particular object is likely a MISS because it says Vary:User-Agent.
> This is a rather unfriendly action for a site to take, it means that
> even a single byte of diffference in two clients User-Agent header cause
> a MISS and replaces the cached content with new data (which will likely
> MISS on the next client too).
>
>
> > And this is my config file:
> >
> > cache_effective_user squid
> > cache_effective_group squid
> > acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
> > acl localnet src 172.16.0.0/12 # RFC1918 possible internal
> > network
> > acl localnet src 192.168.0.0/16 # RFC1918 possible internal
> > network
> > acl localnet src fc00::/7 # RFC 4193 local private network range
> > acl localnet src fe80::/10 # RFC 4291 link-local (directly
> > plugged) machines
> > acl SSL_ports port 443
> > acl Safe_ports port 80 # http
> > acl Safe_ports port 21 # ftp
> > acl Safe_ports port 443 # https
> > acl Safe_ports port 70 # gopher
> > acl Safe_ports port 210 # wais
> > acl Safe_ports port 1025-65535 # unregistered ports
> > acl Safe_ports port 280 # http-mgmt
> > acl Safe_ports port 488 # gss-http
> > acl Safe_ports port 591 # filemaker
> > acl Safe_ports port 777 # multiling http
> > acl Safe_ports port 901 # SWAT
> > acl CONNECT method CONNECT
> > http_access allow localhost manager
> > http_access deny manager
> > http_access deny !Safe_ports
> > http_access deny CONNECT !SSL_ports
> > debug_options ALL,1 11,3 31,3 65,3
> > http_access allow localnet
> > http_access allow localhost
> > http_access deny all
> > http_port 3303
> > cache_dir ufs /var/cache/squid 600 16 256
> > cache_mem 256 MB
> > coredump_dir /var/cache/squid
> > refresh_pattern ^ftp: 1440 20% 10080
> > refresh_pattern -i \.(gif|png|jpg|jpeg|ico|bmp)$ 260000 90%
> > 260009 override-expire ignore-no-cache ignore-no-store
> > ignore-private
>
> In 3.2 "ignore-no-cache" is now ignored. The Cache-Control:no-cache
> header *actually* tells Squid to revalidate the object before sending
> (this MAY result in a MISS if the object has changed, or in a REFRESH /
> 304 status if the server object has not).
>
> override-expires tells Squid to ignore the Expires header, in the object
> in your log above Expires is the only thing provided to Squid indicating
> that the objet is storable. Ignoring it may lead to MISS for objects
> without Cache-Control which rely on it for storage timing (like the PNG
> above does).
>
> ignore-private - this is a very dangerous thing to do. Even things like
> images may have drastic unwanted side effects. Think about security
> Captcha systems ... what happens when you force serving the client a
> cached image there? Just about every file type has some problem when you
> generalize it across the entire Internet. If you have to use this
> directive at all make the pattern as specific as possible to the problem
> case.
>
> > refresh_pattern ^gopher: 1440 0% 1440
> > refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
> > refresh_pattern . 0 20% 4320
> >
> > Note that I doubled check that my cache directories belonged to
> > squid:squid and their size slowly grows when I am using squid, yet I get
> > a TON of tcp_miss, even on cacheable sites (such aswww.lci.fr)
> > Any idea?
> >
>
> Okay. So the objects are being cached, but not served from there.
> In 3.2.5 debug_options 22,3 should give you the stale.fresh outcomes
> from the cache check.
>
> Amos
Received on Wed Jan 09 2013 - 11:38:07 MST

This archive was generated by hypermail 2.2.0 : Wed Jan 09 2013 - 12:00:07 MST