IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

五四陈科学院-坚信科学,分享技术 2010-11-30 22:49:50 累计浏览 4,961 次
本机暂存

    手里有个前端自己做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. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 淘宝图片存储架构 (累计阅读 10,960)
  2. 使用Squid缓存视频 (累计阅读 10,339)
  3. nginx的配置文件 (累计阅读 9,882)
  4. 大型高并发高负载网站的系统架构分析 (累计阅读 9,004)
  5. 从谷歌宕机事件认识互联网工作原理 (累计阅读 8,746)
  6. 说说lighttpd的fastcgi (累计阅读 7,322)
  7. 基于Squid的视频业务日志分析 (累计阅读 7,004)
  8. 系统架构的一些思考 (累计阅读 6,792)
  9. 当网站使用CDN后获取客户端真实IP的方法 (累计阅读 5,970)
  10. [调优] Squid 不同版本的性能对比 (累计阅读 5,590)