设为首页 收藏本站
查看: 1026|回复: 0

[经验分享] varnish与squid的比较

[复制链接]

尚未签到

发表于 2018-12-27 10:50:53 | 显示全部楼层 |阅读模式
  生产环境中尝试使用varnish替代squid的主要原因:
  1. squid不支持多核cpu, 生产环境中大多使用Dell R610系列,这种类型机器配置为2个4核双线程cpu, 操作系统识别为16个,对squid来说,只能利用到一个逻辑cpu, 其它15个逻辑cpu相当于一直浪费。
  2. squid无法批量清除缓存
  3. squid3.0目前还无法支持http 1.1, 这对一些管理调整(如gzip压缩,cache-control)带来不必要的麻烦
  4. 目前我还未找到squid的grace模式(指源站不可到达时,继续使用过期缓存为用户提供服务),而varnish是完全支持的。
  5. 经过生产环境数个月反复测试,同样访问量情况下,varnish消耗的更少,也没有出现过崩溃情况,而squid因为不支持多核,导致Dell R610机器负载往往超过4,但使用varnish后,机器负载从来没超过1.5
  经过反复测试,我们已经开始在日独立IP百万级站点中使用varnish替换squid了。
  但这个过程中,充满太多未知情况,目前我们所遇到的关键问题下:
  1. 高流量情况下iptables丢包
  ip_conntrack: table full, dropping packet.
  按网上常规方法,只修改/etc/sysctl.conf是无效的
  需要以下两步,方可解决:
  /boot/grub/grub.conf kernel行中增加参数
  ip_conntrack.hashsize=524288
  /etc/sysctl.conf中增加
  net.ipv4.netfilter.ip_conntrack_max = 2097152
  注意,上面的操作需要重启机器
  2. 登录shell ulimit的默认值
  /etc/security/limits.conf中加入
  * soft nofile 655360
  * hard nofile 655360
  默认的文件描述符限制为1024, 太小,即使调整成65536,对高负载机器也可能不够,故设置为655360,但也要注意,这个值不能设置过大,否则会导致shell无法登录。
  修改/etc/security/limits.conf后,只对登录shell有效。对开机运行的程序,一定要注意这个问题(在启动前设置ulimit)
  shell级的资源限制来自于/etc/security/limits.conf,那么系统级的资源限制可在哪里修改?
  3. squid换为varnish后流量增加的解决方案:
  /etc/security/limits.conf中加入
  * soft memlock 1048576
  * soft memlock 1048576
  或执行 ulimit -HSl 1048576
  默认的memlock 只有32K,对varnish来说,太小太小。varnish使用内存块保存日志,故这个值需要调大一些。
  上面的值将其调整为1G,即可解决varnish流量高于squid的问题
  4. varnish运行中频繁出现503错误,400错误
  出现503错误这是因为varnish对后端服务器响应header有限制,默认长度是2048,可将其调大一些
  -p http_resp_hdr_len=8192
  再重启即可解决503错误。
  出现400错误是因为varnish认为客户端请求header行数及长度过大,其默认最大接受的请求header行数为64,最大长度(所有请求header行长度之和)为2048,解决这个问题比较简单,在varnish启动参数中加入:
  -p http_max_hdr=256
  -p http_req_hdr_len=8192
  再重启varnish, 即可解决其400错误。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656405-1-1.html 上篇帖子: 关于squid for windows 的LOG文件脚本! 下篇帖子: 编译安装squid3.1--亲测
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表