技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Apache --> squid缓存失效之谜:一步步提高squid缓存命中率办法记录

squid缓存失效之谜:一步步提高squid缓存命中率办法记录

浏览:3587次  出处信息

    手里有个前端自己做cdn的服务器,结果发现进出流量相等,这是个诡异的事情,因为一般来说,做前端缓存的机器,流量基本上很长时间里都是出多进少的。

    一开始的时候,是nginx做的nginx_cache,发现进出流量相等后,换上了squid 3.0,使用命令:

    squidclient -p 8088 mgr:info (启在8088)

    发现如图所示的几个命中率,相当低下,一般的WEB服务器缓存30-60%是正常的,而CDN作用的应该说80%以上才是正常的。

    http://img03.taobaocdn.com/imgextra/i3/T1nU8SXdFrXXcxpD.U_015909.jpg

    刚启动squid的时候,个人认为是因为缓存文件还没有拖动到前端来,所以是正常的,但结果过了一天后,还是没有看到进流量松动。

    第二天来,硬盘已经过了10G了,还是不行。通过cat access.log来看,cat access.log|gawk ‘{print $4}’|sort|uniq -c|sort -nr

    发现TCP_MISS/200相当的多,再看流量图,进出还是没有变化。杯具。

    于是乎,想到了直接tail -f access.log,看看究竟都有什么东西在访问。

    一条接一条的xxx.jpg?unid=1111触动了我(公司用来做用户行为分析的参数),就这样白花花的浪费了缓存。

    解决方案:

    幸好,squid前面,还有一层nginx,于是考虑在nginx上做转发,将所有的xxx.jpg?xx=xx全部转到 xxx.jpg去,过滤掉url中的参数。尝试了几个不行,内置的参数$url $request_url都不可行。

    只有一招利于403来跳转的可行。

     location ~* (.jpg$)|(.png$)|(.gif$)|(.mp3$)|(.txt$){

     proxy_pass http://squid;

     proxy_redirect default;

     if ($is_args)

     {

     return 403;

     error_page 403 =200 $scheme://$host$uri;

     }

     }

    重启nginx,看到了进流量图明显大幅度下降。

    http://img02.taobaocdn.com/imgextra/i2/T14F8TXolXXXXOWxsV_020704.jpg

建议继续学习:

  1. 浅析http协议、cookies和session机制、浏览器缓存    (阅读:15931)
  2. 分布式缓存系统 Memcached 入门    (阅读:14788)
  3. 强制刷新本地 DNS 缓存记录    (阅读:9310)
  4. 使用Squid缓存视频    (阅读:9225)
  5. php缓存与加速分析与汇总    (阅读:6416)
  6. Web应用的缓存设计模式    (阅读:6563)
  7. 浏览器缓存机制    (阅读:5836)
  8. 缓存设计的一些思考    (阅读:5786)
  9. 谈冷热数据    (阅读:5854)
  10. 使用memc-nginx和srcache-nginx构建高效透明的缓存机制    (阅读:5762)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1