Chinaunix首页 | 论坛 | 博客
  • 博客访问: 544902
  • 博文数量: 114
  • 博客积分: 5611
  • 博客等级: 大校
  • 技术积分: 1027
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-19 08:55
文章分类

全部博文(114)

文章存档

2011年(29)

2010年(20)

2009年(1)

2008年(11)

2007年(53)

分类: LINUX

2007-12-25 11:07:49

如果你想让squid缓冲microsoft update的patch的话,请把以下语句添加到squid的设置文件:

  1. refresh_pattern -i windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
  2. refresh_pattern -i download.microsoft.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
  3. refresh_pattern -i au.download.windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims

range_offset_limit 20480 KB
range_offset_limit -1 KB

以下是我的摸索过程:

又到了Microsoft一月一度的patch日了,想象着公司的几百台电脑同时在squid上请求相同的patch的情景一定相当的壮观。于是看了下squid服务器上windowsupdate.com的访问日志,乖乖,怎么全部都是TCP_MISS的纪录????

想想不太对劲,为了保证windows update的东西能被squid cache住,我之前已经用refresh_pattern语句强制保存windows update的相关站点的exe和cab文件了,难道我的refresh_pattern配置有问题??看了看squid的配置文件,感觉不太象,于是用wget去抓一下今天的升级补丁,果然没有被squid缓存住:

  1. Proxy request sent, awaiting response...
  2.   HTTP/1.0 200 OK
  3.   Date: Thu, 13 Sep 2007 04:55:27 GMT
  4.   Content-Length: 7760926
  5.   Content-Type: application/octet-stream
  6.   ETag: "4e8236a3318ec71:803b"
  7.   Last-Modified: Fri, 04 May 2007 09:50:24 GMT
  8.   Accept-Ranges: bytes
  9.   Server: Microsoft-IIS/6.0
  10.   X-Powered-By: ASP.NET
  11.   X-Cache: MISS from cache1
  12.   X-Cache-Lookup: MISS from cache1:3128
  13.   Proxy-Connection: close

这是为什么呢?想了半天没有搞明白,整好到了吃饭时间,先去吃饭吧。结果吃完饭回来,很惊奇的看到如下的情景
squid_save_traffic

乖乖隆个东,看来squid针对microsoft的update站点的refresh_pattern设置还是正确的,那么问题出在哪里呢?

忽然间想起来,现在的microsoft后台补丁升级都是用bits服务的,也就是说,会把一个补丁下载分成多个线程下载的.......而,这个,我好象没有让squid缓存多线程下载的东西,唉

所以最终,针对microsoft update的squid策略反映到squid的设置文件就是这个:

  1. refresh_pattern -i windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
  2. refresh_pattern -i download.microsoft.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
  3. refresh_pattern -i au.download.windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims

range_offset_limit 20480 KB #我的squid缓冲的object的上限是20480 KB,所以要squid预先抓取的上限也就设置为 20480 KB,超过了squid不缓冲也没有意义!
range_offset_limit -1 KB

附录:其实本文所提到的对squid的调整在实际应用中是有问题的,为什么呢?请各位同学思考

阅读(1505) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~