您的位置:首页 > 运维架构 > 反向代理

[zt]squid的命中率研究

2009-01-30 17:23 190 查看

[zt]squid的命中率研究

察看命中率的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 http://msg.ppstream.com/msg/msg.dat - FIRST_UP_PARENT/d text/html

1198559813.186 1 218.106.61.11 TCP_IMS_HIT/304 233 GET http://msg.ppstream.com/test.html - NONE/- text/html

1198559829.358 0 218.106.61.11 TCP_IMS_HIT/304 224 GET http://msg.ppstream.com/msg/msg.dat - 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: */*

User-Agent: Agent16205421

Host: msg.ppstream.com

Cache-Control: no-cache

Cookie: pps_client_id=AALOMYINCT7T7BQKTOS4RZCNT4DEKLTO; pps_client_ver=1.0.0.2506

响应

HTTP/1.0 200 OK

Date: Tue, 25 Dec 2007 06:04:44 GMT

Server: Apache

Last-Modified: Mon, 24 Dec 2007 15:50:02 GMT

ETag: "51d701-0-2e601e80"

Accept-Ranges: bytes

Content-Length: 0

Content-Type: text/html; charset=GB2312

X-Cache: HIT from cache

Connection: close

IE浏览器的请求头

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: