squid命中率(转)
By admin
- 2 minutes read - 230 words察看命中率的shell cat access.log|gawk ‘{print $4}’|sort|uniq -c|sort -nr
重点观察下面三个内容
- TCP_MEM_HIT
- TCP_IMS_HIT
- TCP_REFRESH_HIT
1198559749.083 0 60.4.218.18 TCP_REFRESH_HIT/200 271 GET – FIRST_UP_PARENT/d text/html 1198559813.186 1 218.106.61.11 TCP_IMS_HIT/304 233 GET – NONE/- text/html 1198559829.358 0 218.106.61.11 TCP_IMS_HIT/304 224 GET – NONE/- text/html
TCP_IMS_HIT:NONE 客户端发送确认请求,Squid发现更近来的、新鲜的请求资源的拷贝。 Squid发送更新的内容到客户端,而不联系原始服务器。(这指明Squid对本次请求,不会与任何其他服务器(邻居或原始服务器)通信。) TCP_MEM_HIT:NONE 类似 TCP_IMS_HIT:NONE, 从内存中响应 TCP_REFRESH_HIT:FIRST_UP_PARENT/d Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。
原始服务器返回304(未修改)响应,指示squid的拷贝仍旧是新鲜的。或者是重新更新文件。(Squid直接转发请求到原始服务器)
日志里的 none 就表示直接通过缓存回答客户端 direct 表示有经过原服务器进行查询了才回答客户端
经常有这样的情况,虽然hit的命中率有90%多,但是TCP_REFRESH_HIT:FIRST_UP_PARENT/d类似这样的日志非常多,表示squid性能并未到最优,每次请求仍然会往源服务器上查询一次。
检查问题发现,对于.html文件,squid能比较好的进程缓冲,对于从客户端访问的.dat文件,基本squid响应都为TCP_REFRESH_HIT:FIRST_UP_PARENT/d
在apache内增加AddType text/html .dat的配置继续测试,情况依然。 另发现,使用IE浏览器和FIREFOX访问相同路径会返回TCP_IMS_HIT:NONE,表示不经过原始服务器通信,而客户端软件内访问此地址大部分为TCP_REFRESH_HIT:FIRST_UP_PARENT/d的响应。
总结原因,可能为客户端的请求头和浏览器标准请求头略有差别导致,怀疑是否为这条Cache-Control: no-cache引起
最终测试结果发现是客户端发送了个Cache-Control: no-cache
调整squid的配置参数实现需要的效果,由于squid遵循了RFC标准,默认对于浏览器发送带的Cache-Control:no-cache 和 Pragma: no-cache的请求不进行缓冲,需要做以下配置文件的修改。
refresh_pattern -i .dat 10 100% 30 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-private (其中 ignore-no-cache ignore-private 为2.6.13后的针对Cache-Control:no-cache 和 Pragma: no-cache的扩展)
客户端的请求头
GET /msg/msg.dat HTTP/1.1 Accept: ** Accept-Language: zh-cn Accept-Encoding: gzip, deflate If-Modified-Since: Mon, 24 Dec 2007 15:50:02 GMT; length=0 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Host: msg.ppstream.com Connection: Keep-Alive Cookie: pps_client_id=AALOMYINCT7T7BQKTOS4RZCNT4DEKLTO; pps_client_ver=1.0.0.2506
响应
HTTP/1.0 304 Not Modified Date: Tue, 25 Dec 2007 06:12:10 GMT Content-Type: text/html; charset=GB2312 Last-Modified: Mon, 24 Dec 2007 15:50:02 GMT ETag: “51d701-0-2e601e80” X-Cache: HIT from cache Connection: close
===========================================
firefox的请求头
GET /msg/msg.dat HTTP/1.1 Host: msg.ppstream.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: zh-cn,zh;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: x-gbk,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: __utma=46731238.370718705.1195540611.1196400491.1196407367.12; CoreSessionID=2007-12-19+10%5E30%5E46_1aeadaddf0a3629f8158d579a4aec8cf; SessionID=769917d3475362a416e0a; \__utmz=46731238.1195632676.3.2.utmccn=(referral)|utmcsr=pps.tv|utmcct=/tv_online.php|utmcmd=referral If-Modified-Since: Mon, 24 Dec 2007 15:50:02 GMT If-None-Match: “51d701-0-2e601e80” Cache-Control: max-age=0
响应
HTTP/1.0 304 Not Modified Date: Tue, 25 Dec 2007 06:14:10 GMT Content-Type: text/html; charset=GB2312 Last-Modified: Mon, 24 Dec 2007 15:50:02 GMT ETag: “51d701-0-2e601e80” X-Cache: HIT from cache Connection: close