生产环境中尝试使用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错误。

转载于:https://blog.51cto.com/lucifer119/1435810

varnish与squid的比较相关推荐

  1. Varnish 和 Squid比较到底强多少

    对于坊间流传的: 1.varnish的性能比squid高10~20倍 2.squid 3.0的性能比2.6有提高 本次测试将会揭示结果, 是否varnish的架构真的能提升那么多的性能 是否squid ...

  2. 谈谈varnish、squid、apache、nginx缓存的对比

    1.Squid,很古老的反向代理软件,拥有传统代理.身份验证.流量管理等高级功能,但是配置太复杂.它算是目前互联网应用得最多的反向缓存代理服务器,工作于各大古老的cdn上. 2.Varnish是新兴的 ...

  3. varnish与squid比较

    1.Varnish概述及工作流程 1.1 Varnish概述 Varnish是高性能开源的反向代理服务器和HTTP缓存服务器 Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存 Sq ...

  4. 使用Varnish代替Squid做网站缓存加速器的详细解决方案

    我曾经写过一篇文章──<初步试用Squid的替代产品──Varnish Cache网站加速器>,但当时仅仅是用着玩,没做深入研究. 今天写的这篇关于Varnish的文章,已经是一篇可以完全 ...

  5. proxyServer squid / varnish / apache traffic server / ATS

    apache traffic server http://gwan.com/benchmark/index.html http://zymlinux.net/  赵永明(阿里) /  旺旺群:7543 ...

  6. 提高性能的Varnish缓存方案

    转载 http://www.s135.com/post/313/ arnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang (http://www.vg.no) 使用 ...

  7. varnish缓存的配置优化(redhat5.4)

    Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好. 但与老牌的squid相比,各有各的优 ...

  8. varnish详解3

    1.Varnish简介 Varnish是一款高性能的反向代理服务器和HTTP加速器,它的开发者Poul-Henning Kamp是FreeBSD的核心开发成员. 2.Varnish特点 基于内存进行缓 ...

  9. 《高性能Linux服务器构建实战》——2.1节初识Varnish

    2.1 初识Varnish 2.1.1 Varnish概述 Varnish是一款高性能且开源的反向代理服务器和HTTP 加速器,它的开发者Poul-Henning Kamp是FreeBSD核心的开发人 ...

最新文章

  1. android 线性布局位置,android – 如何在线性布局中更改视图的位置.
  2. mac u盘文件过大 拷贝不进去_使用mac时文件太大无法拷贝怎么办
  3. 面向对象的设计模式及魔术函数
  4. TCP/IP协议族之应用层协议(FTP、TFTP)
  5. C++ 学习之旅(5)——设置Setup文件目录
  6. 服务器多核性能排行,服务器内存多核性能
  7. idea集成Activiti Designer插件
  8. mysql数据库不小心删除文件_mysql数据库被删除了,怎么恢復吗
  9. 排序算法python实现_合并排序算法– Java,C和Python实现
  10. 群晖NAS系统DSM入门
  11. 卫星影像的RPC参数
  12. WORD2010文档里面突然不能输入汉字的解决办法
  13. python二进制常量_Python SciPy 常数(Constants)
  14. 4个女人要过一座桥的问题
  15. iphone 程购买实现
  16. 商家们,不要得罪天猫和京东中的任何一个
  17. HDU 6194 后缀自动机
  18. 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】
  19. CodeM 第一题 下单
  20. “指针”和“指针变量”的区别

热门文章

  1. mysql评论与回复一起查_mysql 查询所有评论以及回复
  2. kernel php segfault,php不停报错segfault,求高手帮忙
  3. python的logo图_Turtle绘画Python-logo
  4. 关于 GraphQL 快速入门
  5. 杭州intel服务器维护,服务器应该怎么去维护?
  6. linux内核长期支持版本,Linux Kernel 3.12长期支持分支迎来第63个维护版本
  7. jQuery的创建对象,动态添加、修改、删除属性和方法
  8. android 速度传感器,Android实战技巧之四十二:加速度传感器
  9. 20200114:(leetcode)两数相加
  10. hystrix 源码 线程池隔离_“池”的思想:从java线程池到数据库连接池的源码解读(1)...