Squid性能杀手——fwdFail分析

http://blog.sina.com.cn/s/blog_697d8c4b0100l4zj.html

  Squid在使用aufs做文件系统的时候,对文件系统的读是异步的,而写却是同步的。这样一来,如果存在大量的写操作,将对squid的性能造成严重的影响。

    通常来说,可cache的内容都是“一次写入,反复读取”,而不可cache的内容都不会写入磁盘。那么什么情况会出现如此大量的写入呢?那就是当squid到源站链路很差的时候,可以cache的大文件总是写到一半就被源站中断这种情况。又叫fwdFail。

    fwdFail主要由以下几种原因造成:

    第一,源站关闭连接。比如自己搭建一个源站与squid的环境,用客户端通过squid下载一个大文件,下到一半的时候,关掉源站的http服务。其特点是,squid会受到源站发来的FIN包。这样的话,squid会立即停止下载,并关掉所有的客户端,删除前面下了一半的内容。下次再有客户端来下载的时候,还是从0开始下载。虽然白费了一半的下载,但这还是相对“洗具”的场景。

    第二,“杯具”的场景,就是源站断网,不向squid发FIN包。这样squid就不得不等到read_timeout所配置的时间,再删掉前一半内容,并关掉所有的客户端。更加“杯具”的是,read_timeout到达之前,新连上来的客户端都会“很傻很天真”地等待这一次回源给它们返回数据,直到被关掉。squid默认的read_timeout长达15分钟,这样就会出现squid的连接数在这15分钟内迅速堆积,并使负载急剧升高的情况。

    目前,squid也不支持回源的断点续传,所以只能把第二种情况变成第一种情况。方法就是,将read_timeout设短一些,比如30秒,这样的副作用就是,本来可以恢复的回源连接被早早断掉,使得本来能够下载下来的内容被放弃。

    Squid的回源机制做的还是比较糙,我们下一步会考虑改进这一块,增加断点续传等功能。敬请期待。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值