设为首页 收藏本站
查看: 4118|回复: 5

[经验分享] Varnish、Squid、Ngx_cache性能对比

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-11-5 08:47:51 | 显示全部楼层 |阅读模式
一:概括:

varnish与squid是在业内比较主流的web缓存加速技术,与传统的web加速技术apache cache和nginx cache相比,做的更专业,性能更出众!对于两款软件的简介这里就不多做介绍,网上有很多的资料与文档,感兴趣的同学可以自己看看。下面就一起看看他们的性能和抗压情况吧!



1.工作原理与性能对比

(1)Varnish:

Varnish缓存加速原理:Varnish把数据缓存到服务器的内存中(通过-s file选项也可以先存到磁盘中),用户访问时直接从内存中的缓存数据读取,因此非常快。它可以设置0~60秒的精确缓存时间,不过32位的机器支持的缓存文件最大为2 GB。Varnish的状态机设计不仅巧妙,结构也很清晰,利用二叉堆管理缓存文件,即可达到随时删除的目的。

优点:varnish由于是采用多线程的方式运行,所以它的系统资源利用率要比squid强(squid采用单进程耗1核CPU),但在高并发下它的CPU、Mem、IO资源消耗也比squid严重。varnish的TCP连接与释放比squid更快一些,因此在同样的负载情况下支持更高的并发连接数。由于客户是从内存中读取缓存,因此比squid硬盘级的缓存速度更快。Varnish支持管理端口通过正则表达式来清楚缓存。Varnish总体来说适合高质量大流量的缓存加速(如静态页面和小文件等)。





(2)Squid:

Squid缓存加速原理:支持正向代理、透明代理、反向代理,它采用硬盘级的缓存技术,将用户的请求文件缓存到本地磁盘中能够缓存更多的内容,每G磁盘空间需要32M的内存,因此512M内存的系统能支持16G的磁盘缓存。

优点:squid采用单进程使用单核CPU,利用资源的问题上不如varnish合理,但同时在资源消耗上要比varnish小。由于是采用硬盘做缓存,所以数据的完整性上要比varnish强,因为缓存到varnish内存上的数据是易失的,一旦varnish进程hang、crash或者重启,缓存的数据都会从内存中释放出来,此时所有请求都会发送到后端服务器,在高并发下会给后端的server造成很大的压力。Squid很多人说命中比较低,所以需要多个服务器同时来缓存才能发挥作用。总体来说squid缓存的体系比较大成本高,适合大文件、流媒体等数据的缓存。



(3)Nginx_cache:

Nginx缓存加速原理:nginx在0.7.48版本以后开始支持类似squid的缓存功能,他通过proxy_cache模块与fastcgi_cache模块实现对web的静态页面加速和对fastcgi动态程序的缓存加速,nginx_cache缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302这样的非200状态码。同时nginx_cache将缓存到的数据直接存放到内存文件系统中加快访问速度,同时内存文件系统与磁盘做硬link,不分热点与非热点数据,内存占用率不是最优的。Nginx_cache把热点文件分层缓存,一般使用时将cache目录放置与内存文件系统中。

优点:Nginx已经具备Squid所拥有的Web缓存加速功能、通过ngx_cache_purge模块清除指定URL缓存的功能。而在性能上,Nginx对多核CPU的利用,胜过Squid不少。另外,在反向代理、负载均衡、健康检查、后端服务器故障转移、Rewrite重写、易用性上,Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。



二:测试要求:

(1)要求与环境:

要求:对Nginx源站中的一个大小为20K左右的静态页面进行压力测试。

环境(硬件):缓存服务器为HP DL360 G5,内存:8G,CPU:单颗Intel(R) Xeon CPU E5506 2.13GHz 4核,硬盘:160G scsi接口。

环境(软件):缓存和源站系统均为centOS 6.4 64位,squid版本为2.6-STABLE23(官方最稳定),varnish版本为最新的3.0.2。nginx

源站:Nginx服务器,HP DL160 G6,内存8G,CPU:单颗 Intel Xeon CPU E5504 2.00GHz 4核,硬盘:160G scsi接口。

预计结果:在大量的论坛和web缓存加速的博文中,都说varnish比squid更强,支持的并发更高,性能更稳定。而nginx_cahce并不是专业的缓存加速软件,理论上并没有squid和varnish支持的好。根据varnish的特点(小文件、静态页面加速效果更好),理论上应该是varnish的特点更适合这个应用场景。但我们来看看实际是不是这样呢?



下面我们就来利用web压力测试软件webbench来进行测试吧。

181037277.jpg
如图,-c选项是客户端的请求个数,-t为时间,默认单位是秒。如图意义为,在30秒内对http://10.20.216.56/tz.htm进行1000次HTTP(GET)请求。Speed的值为每分钟访问页面的数量,Requests为成功和失败访问的次数。



(2)测试结果:



压力情况


缓存类型

30秒内500个客户端请求

30秒内1000个客户端请求

30秒内3000个客户端请求

30秒内5000个客户端请求

30秒内10000个客户端请求

Squid2.6-STABLE23-ufs存储

40.5万次@%

81.0万

pages/min

40.7万次@%

81.4万pages/min

40.8万次@%

81.7万pages/min

40.5万次@%

81.1万pages/min

40.6万99.9%

82.5万pages/min

Squid2.6-STABLE23-coss存储

44.2万次@%

86.1万

pages/min

45.2万次@%

87.1万

pages/min

44.3万次@%

89.3万

pages/min

44.5万次@%

87.3万

pages/min

44.1万99.9%

86.3万

pages/min

Varnish-3.0.2

70.1万次@%

140万pages/min

69.7万次@%

139.4万pages/min

69.9万99.66%

140.2万pages/min

70.2万99.26%

141.5万pages/min

68.9万93.88%

148.5万pages/min


Nginx_cache


60.8万次@%

121.6万

pages/min

63.1万次@%

125.9万

pages/min

67.5万99.99%

134.5万

pages/min

72.7万99.99%

145.5万

pages/min

73.4万99.82%

148.7万

pages/min

Nginx源站

66.1万次@%

133.0万

pages/min

63.4万次@%

127.0万

pages/min

80.1万98.8%

162.1万

pages/min

82.2万96.9%

169.7万

pages/min

89.4万93.8%

191.6万

pages/min



综上表所述:

1.Varnish:在500-1000并发情况下,varnish的性能明显好于对手,很好的起到了缓存加速的目的并且大大减轻了源站的压力,但随着访问量的增加从3000以上并发开始,varnish的性能开始下滑,访问成功率下降、404错误失败增加、系统CPU负载同样严重。并没有预期的效果那么出众。

Varnish的关键配置文件如下:

varnishd -u varnish -g varnish -f /usr/local/varnish/etc/vcl.conf -a 10.20.216.56:80 -s file,/usr/local/varnish/cache/varnish_cache.data,4G -w 5,51200,30 -t 3600 -T 10.20.216.56:3000

-s:制定存储类型和存储目录文件大小。

-w:min,max,timeout 指定varnish的工作线程数。

-t:指定默认ttl值。



2.Squid:基于ufs的传统存储方式,随着访问量的增高性能并没有明显的变化(系统负载的情况也比较平稳),可是在10000的高并发下还是出现了失败的情况;基于coss的适合小文件缓存的存储方式,效果比ufs稍稍的强一些但提升的不是很大,大概提升不到10%。总体来看,squid不论是采用哪种存储方式存数据,加速的效果都没有源站好,但分担负载的作用还是能充分体现的。和预期结果还是有偏差。

Squid的关键配置如下:

cache_mem 1024 MB #指定squid可以使用的内存的理想值

cache_swap_low 80 #缓存空间允许使用的最小空间百分比

cache_swap_high 90 #缓存空间允许使用的最大空间百分比

maximum_object_size_in_memory 100 KB #内存缓存的最大文件

cache_dir ufs /usr/local/squid/cache 20480 16 256 max-size=204800 #设置磁盘缓存工作方式,工作路径,大小单位MB,一级HASH的目录数量,二级HASH的目录数量。



3.Nginx_cache:nginx的proxy_cache缓存加速模块,虽然在500-1000左右并发的情况下没有varnish卓越,但在高并发3000以上的情况下性能还是比预期的要好,无论是在成功相应的请求次数上还是速度上,都比varnish和squid的性能更强更稳定。

Nginx_cache关键配置如下:

worker_processes 4; #指定进程的个数

worker_rlimit_nofile 65535; #文件句柄数,和系统单进程打开的文件数相同

events

{

use epoll;

worker_connections 65535; #定义单个进程的连接数

}

server_names_hash_bucket_size 128; #共同控制保存服务器名的HASH表

proxy_connect_timeout 5; #nginx和后端服务器连接超时时间

proxy_read_timeout 60; #连接成功后等候后端服务器响应时间,其实已经进入后端的排队等候处理

proxy_send_timeout 5; #后端服务器数据回传时间,就是在规定的时间内后端服务器必须传完所有的数据

proxy_buffer_size 16k; #代理请求缓存去,该缓存去间保存用户的头信息,以供nginx进行规则处理一般只要保能保存下头信息即可

proxy_buffers 4 64k; #告诉nginx保存单个用的几个buffer 最大用多少空间

proxy_busy_buffers_size 128k; #高负载下缓冲大小(proxy_buffers*2)

proxy_temp_file_write_size 128k; #设置缓存文件夹大小,如果大于该值,将从upstream 服务器传递请求,而不缓冲到磁盘上





概括总结:

由于需求是针对于50K以下的小文件,谁抗压能力更强加速效果更好,并且保障5个9以上的高可用性,为用户提供更好的体验。在500~1000左右的并发下,varnish的表现更出色。而在3000以上的并发情况下,Nginx_cache出乎意料,比varnish和squid的整体性能都要强。因此:

3000以下并发:varnish

3000以上并发:Nginx_cache



PS:以上测试结果的数据受系统环境和应用程序参数的影响,因此不一定很准确,仅供参考。


运维网声明 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-10248-1-1.html 上篇帖子: Tomcat 内存溢出的问题 下篇帖子: squid隐藏squid的版本号

尚未签到

发表于 2013-11-28 20:03:42 | 显示全部楼层
生活中的每一件事,都可以用三个字总结:会过去。

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

尚未签到

发表于 2013-11-30 00:47:38 | 显示全部楼层
曾经的海誓山盟、现在的毫不在乎/。

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

尚未签到

发表于 2013-11-30 23:39:44 | 显示全部楼层
我要的不是那 仅有的回忆。

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

尚未签到

发表于 2013-12-4 04:23:25 | 显示全部楼层
你是什么人,只有你自己知道,没人能爬到你的肚里看

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

尚未签到

发表于 2013-12-6 00:04:44 | 显示全部楼层
人这辈子就是为了自己而活的.

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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