varnish与squid的比较
生产环境中尝试使用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错误。
varnish与squid的比较的更多相关文章
- web cache server方案比较:varnish、squid、nginx
linux运维中,web cache server方案的部署是一个很重要的环节,选择也有很多种比如:varnish.squid.nginx.下面就对当下常用的这几个web cache server做一 ...
- 使用Varnish代替Squid做网站缓存加速器的详细解决方案----转载
[文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.s135.com] 我曾经写过一篇文章──<初步试用Squid的替代产品──Varn ...
- varnish、squid、apache、nginx缓存的对比<转>
1.Squid,很古老的反向代理软件,拥有传统代理.身份验证.流量管理等高级功能,但是配置太复杂.它算是目前互联网应用得最多的反向缓存代理服务器,工作于各大古老的cdn上. 2.Varnish是新兴的 ...
- varnish和squid的对比
Varnish与Squid的对比 说到Varnish,不能不提Squid,Squid是一个高性能的代理缓存服务器,它和varnish之间有诸多的异同点,这里分析如下: 下面是他们之间的相同点: ...
- varnish与squid缓存效率对比实例
前提:安装varnish.squid.webbench(压测工具) 注:varnish和squid机都未安装其他多余服务,服务器绑定域名为www.dannylinux.top (为同一台服务器,测试 ...
- Varnish与Squid的对比
Varnish与Squid的对比 说到Varnish,就不能不提Squid.Squid是一个高性能的代理缓存服务器,它和Varnish相比较有诸多的异同点,下面进行分析. 下面是Varnish与Squ ...
- varnish squid nginx比较
linux运维中,web cache server方案的部署是一个很重要的环节,选择也有很多种比如:varnish.squid.nginx.下面就对当下常用的这几个web cache server做一 ...
- 谈谈varnish,squid,apache,nginx缓存的对比
总是有人在问cache用什么,有varnish,squid,apache,nginx这几种,到底是我们用什么架构cache. 1.从这些功能上.varnish和squid是专业的cache服务,而ap ...
- 学习varnish随笔
Varnish是一款高性能.开源的反向代理服务器和缓存服务器.Varnish使用内存缓存文件来减少响应时间和网络带宽消耗.这个项目是由挪威的一家报纸Verdens Gang的网络分支起始的,其架构设计 ...
随机推荐
- fiddler 的AutoRespoder的使用(手动添加测试桩)
---恢复内容开始--- 1.首先我们抓取一个百度的请求,由于百度请求是https协议,需要手动添加证书(这个不写了,大佬们自己手动找下资料) 2.fiddler抓取的百度请求,其他的无关信息删除,便 ...
- mysqladmin命令用法
mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... option 选项: -c numbe ...
- VisualGDB系列2:VisualGDB对Linux平台的支持特性
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 1 复杂问题的直观解决方案 只需要轻点几 ...
- grep 不打印本身
显示java进程的同时还会把“grep java”这个进程打印出来“root 5523 5203 0 10:49 pts/0 00:00:00 grep java”,为了不打印此行,有以下几种方式,大 ...
- C语言学习笔记--单引号和双引号
(1)C 语言中单引号用来表示字符字面量(是个数值)被编译为对应的 ASCII 码 (2)C 语言中双引号用来表示字符串字面量(是个指针)被编译为对应的内存地址 例如:'a'表示字符字面量(97),在 ...
- 应用HtmlInputFile进行大文件上传 解决asp.net上传大文件默认文件大小限制
选择一个文件,也可以正确上传至服务器,但您会发现文件大于2048的时候,出现:Internet Explorer显示 "The page cannot be displayed - Cann ...
- 仿QQ底部切换(Fragment + Radio)
第一步: activity_main.xml 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/ ...
- 用JSP输出Hello World
------------------siwuxie095 在 Eclipse 的 Package Explorer,右键->New-> ...
- MyBatis入门基础
转自http://www.cnblogs.com/selene/p/4604605.html 话不多说,先看看原始的JDBC程序代码,看看这样的代码存在什么样子的问题. package com.uti ...
- .NET中的泛型委托
.Net中有一个内置的委托 Func 它总共有以下5种形式 1. Func<TResult> 2. Func<T,TResult> 3. Func<T1,T2,TR ...