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

[经验分享] Varnish+Xcache构建高性能WEB构架初探

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2015-9-3 02:07:59 | 显示全部楼层 |阅读模式
  本文主要讲述web优化方案和缓存工具的调研及使用。根据目前的测试结果来看,采用varnish+xcache作为 apache和
  php缓存这种架构具有高并发、高稳定性,易扩展等优点,服务器的动态请求处理能力是之前的7倍之多。通过分析发现,
  目前对服务器的负载主要是在cpu使用方面,随着流量的增加瓶颈也将出现在cpu方面,而内存和IO方面都不是问题。
  针对这样的情况,我们就要研究怎么去降低cpu的负载,消除或降低系统的瓶颈。
  
业务特点分析
U服务采用的是LAMP(Linux Apache mysql php)架构,而服务本身的逻辑比较简单,就是根据不同的url返回特定的页面内容,而这些页面内容基本是不会变的。整个过程是由php动态完成的,不需 要和其他服务器交互。在一个请求的响应过程中,系统cpu的消耗基本都在php处理上面。我们要做的就是尽量减少php的动态处理。
优化方案调研
性能优化通常的方法是采用缓存策略。根据U服务的业务特点,优化主要从两个方面进行,php缓存和前端缓存,原理图如下:
DSC0000.jpg
Php缓存调研
每次HTTP请求PHP页面时,PHP代码都会被解析和翻译为操作码(PHP 引擎直接执行的原语指令--类似于汇编语言)再执行。在要求很低或可忽略的情况下,服务器看上去能立即执行这个复杂的解释过程。但是一旦处理的页面增加, 重复工作就会对服务器造成很大的负担。在某些情况下,“编译”PHP代码的时间会远远超过执行该代码所需的时间,并且会对服务器负载造成很大压力。Php缓存主要是缓存opcode,避免重复编译PHP代码。目前针对php的内存缓存策略主要有 memcache 、 eAccelerator 、 xcache 和 APC 。Memcache是一种基于网络的缓存策略,是 一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检 索的结果等。从memcache的特点来看,更适合用于分布式数据库和分布式计算领域。光从页面缓存和加速角度来说远不及eAccelerator、 xcache和APC。eAccelerator、 xcache 和 APC 差 不多,都是自由开放源码php加速器,优化和动态内容缓存,能够大大提高php脚本性能。它使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 其中xcache是一种比较新的加速器,是eAccelerator的替代产品,更加稳定和高效,目前shifen前端已在使用。
Http前端缓存调研
针对HTTP的内存缓存策略使用得比较多就是 squid 和 varnish 。Squid 是一种在Linux下使用得比较 多的优秀的代理服务器,针对web用户来说,它还是一个高性能的代理缓存服务器,它将数据缓存在内存中,同时也缓存DNS的查询结果,可以加快网络浏览的 速度,提高客户机的访问命中率。Squid是目前使用的最广的HTTP加速器之一,目前在百度使用得还很少。Varnish 是另一种高性能的开源 HTTP加速器。Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多。在1975年时,储存媒介只有两种:内存与硬盘。但现在计算 机系统的内存除了主存外,还包括了CPU内的L1、L2,甚至有L3快取。硬盘上也有自己的快取装置,因此Squid Cache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但操作系统可以得知这些情况,所以这部份的工作应该交给操作系统处理,这就是 Varnish cache设计架构。目前国内有些门户网站如新浪,腾讯正在使用。
缓存工具性能对比及选择
测试平台: HOST:tc-un-ct00.tc OS: Linux 2.6.9_5-4-0-2 #1 SMP CPU: Intel(R) Xeon(R) CPU 5150 @ 2.66GHz × 4 MEM: 8GB 测试数据 : jx-rcv00 20081028日18:00 – 19:00 间的数据 压力工具 : pfmtest
Php缓存工具对比测试
几个主流php缓存工具性能对比测试如下:
DSC0001.jpg
前端缓存工具对比测试
apache,squid+apache,varnish+apache 性能对比如下:
DSC0002.jpg
测试结论
Php缓存工具测试中,xcache在响应时间,cpu占用的方面均有最佳的表现;另一方面,从前端缓存测试结果来看,varnish更适合U服务的全动态服务。
Varnish及xcache的使用
Varnish的使用
varnish 工具的介绍及详细使用方法参见http://varnish.projects.linpro.no/
Xcache的使用
Xcache的介绍及详细使用方法参加http://xcache.lighttpd.net/

运维网声明 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-108798-1-1.html 上篇帖子: Introduction to XCache ¶ 下篇帖子: win32 安装 xcache扩展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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