




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网站的webserver与缓存WebserverWebserver用来解析HTTP协议。当web服务器接收到一个HTTP请求时,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求,web服务器可以响应一个静态页面或者图片。进行页面跳转,或者把动态响应的产生委托给一些其它的程序完成,比如CGI,JSP,servlets,ASP,PHP脚本。当用户访问一个网站时,首先用户通过查询DNS服务器,得到该域名对应的IP地址,然后使用这个IP地址来进行访问。用户的请求是一个url地址,在web服务器端,url地址对应web服务器上的文件系统中的某个网站文件的路径。Webserver的作用就是解析HTTP协议,通过用户发来请求的url地址从web服务器的文件系统中找到用户需要的HTML页面、静态文件,然后返回给用户。如果用户访问的是动态页面,则将请求转发到应用服务器来执行。FastCGICGICGI(CommonGatewayInterface),指运行在服务器上,提供同客户端HTML页面的接口。多数CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。1・1・1・2FastCGIFastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。而CGI解释器的反复加载是CGI性能低下的主要原因。如果CGI解释器保持在内存中并接受FastCGI进程管理器的调度,则可以提供良好的性能、伸缩性能和Fail-over特性等。FastCGI的工作原理如下:FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多php-cgi进程)并等待来自webserver的连接。启动php-cgiFastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。当客户端请求到达web服务器时,web服务器将请求采用TCP协议或者UNIX套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。Web服务器将CGI环境变量和标准输入法发送到FastCGI子进程php-cgi。FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回web服务器。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器的下一个连接。FastCGI的优点如下:⑴稳定性。fastcgi是以独立的进程池运行cgi,单独一个进程死掉,系统可以轻松的丢弃,然后重新分配新的进程。安全性。fastcgi和宿主server完全独立,fastcgi如果down了,不会影响到server的性能。高性能ofastcgi和宿主server分开,大负荷的10处理留给webserver进行,比如大量图片、CSS等静态文件的10操作,完全由webserver处理完成。⑵1・1・1.3Lighttpd服务器Lighttpd是一个具有非常低的内存开销,cpu占用率低,性能好的轻量级webserver。支持fastCGI,CGI,输出压缩,URL重写,Alias等重要功能。Lighttpd使用FastCGI方式运行php。1・1・1・4Apache服务器Apache是世界上使用最多的web服务器,市场占有率50%以上。Apache支持SSL技术,支持多个虚拟主机。Apache是以进程为基础结构,进程相对线程消耗更多系统资源。相对Lighttpd和Nginx,Apache是一款重量级的web服务器。总体来讲,Apacheweb服务器具有以下特性:支持HTTP1.1通信协议。支持通用网关接口。支持基于ip、域名、端口的虚拟主机。支持服务器端包含指令(ssl)。⑸支持FastCGIo⑹支持url重写。1・1・1・5Nginx服务器Nginx是俄罗斯人IgorSysoev编写的一款高性能HTTP和反向代理服务器。Nginx能够选择高校的epoll(Linux2.6内核)、kqueue(FreeBSD)、eventport(Solaris10)作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器很好的替代平,因为在同样并发连接的情况下,Nginx相对Apache占用更少的系统资源。⑶1・1・1・6Lighttpd、Apache、Nginx比较Lighttpd是一个单进程模型的webserver,内存使用量很小。Nginx在内存分配方面,表现良好。它使用多线程来处理请求,这使得多个线程之间可以共享内存资源,从而使它的内存使用量大大减少。此外,Nginx使用分阶段的内存分配策略,按需分配,及时释放,所以总体占用内存很小。可以支持较大的并发连接数oApache在运行时使用较大的内存,Apache是多进程模型。Apache使用基于内存池策略的内存管理方法,这种方法使得Apache在运行开始时便一次性申请大片内存作为内存池,这样在随后需要的时候只在内存池中直接获取,不需要再分配。显然,Apache很占用内存。根据国内金山技术经理、系统架构师张宴给出的统计信息,2009年的webserver使用情况如表4-1-1-5所示。
表4-1-1-5各种webserver市场占有率排名Webserver2008.12使用数占有率2009.01使用数占有率占有率变化Apache9567805251.24%9694729852.26%+1.02%IIS6312694033.81%6103837132.91%-0.90%Google104551035.60%98688195.32%-0.28Nginx33543291.80%34625511.87%+0.07%Lighttpd30463331.63%29894161.61%-0.02%1.2缓存在计算机系统中,缓存有很多种。比如CPU内部的一级缓存、二级缓存。文件系统的缓存,磁盘的缓存。在大型网站的后台部署过程中,也灵活运用了各级缓存。主要有客户端的浏览器缓存,服务器端的webserver自身缓存,代理缓存,分布式缓存,数据库自身的缓存等。本节主要分析一下代理缓存和分布式缓存。1・2・1代理缓存在网站后台架构中,代理缓存主要部署在webserver之上,当用户对网站后台发起连接请求时,用户请求先到代理缓存中去查找,如果命中,则将请求返回给用户,如果没有命中,则代理缓存将请求发到webserver,然后websever将请求复制一份到代理缓存中,同时把请求返回给客户。常用的代理缓存有varnish和squid。如图4-2-1所示。代理线存.塢常访冋的的0Rect獲存HTTP圖内存中,WebserverAp«shp/NginKA.r^titipd用于用户in邃访WebserverAp«shp/NginKA.r^titipd图4-2-1代理缓存(黄色部分)1・2・1・1SquidSquid是一个高性能的代理缓存服务器,可以用来加快浏览网页的速度,提高客户机的访问命中率。Squid不仅支持HTTP协议,还支持FTP、SSL、WAIS等协议。Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。Squid的原理如下:⑴每一台squid代理服务器上存有若干个颗磁盘。每颗磁盘又分割成多个分区,每一个分区又可建立很多目录,目录下存放着具体的文件(object)。squid通过查询表的方式来定位某个资源的位置。所查询的表有两种,一种是Hashtable,一种是Digesttable。Hashtable记录着所有Digesttable表信息,所以Hashtable可以称之为目录或者提纲。而Digesttable记录了磁盘上每个分区、每个目录里存放的缓存摘要,所以Digesttable可以称之为摘要或者索引。所以,Squid接到请求后先查询Hashtable,根据Hashtable所指向的Digesttable,再查询所需要的文件。squid服务器存在两种工作关系,一种为Child-Parent,当childsquidserver没有用户需要的数据时,就向parentsquidserver发送请求,并持续等待,直到parentsquidserver回应为止;另一种为Sibling,当本地squidserver没有用户请求的数据时,会向siblingserver发送请求,如果siblingserver没有资料则会向上级sibling或者internet发送数据请求。所以,综上所述,squid运行模式如下:当SquidServer没有资料时,先向Sibling的SquidServer查询数据,如果Sibling没有,则跳过它直接向Parent查询,直到Parent提供资料为止(如果Parent没有资料,则到后端的webserver上获取,当获取到数据后返回给用户的同时,保留一份在自身的缓存中。如果不存在Parent,则SquidServer自身到后端的webserver上获取数据,当获取到数据后返回给用户的同时,保留一份在自身的缓存中。如果还是不能得到数据,则向用户端回复不能得到数据。1・2・1.2VarnishVarnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸VerdensGang使用3台Varnish代替了原来的12台Squid,性能比以前更好。Varnish的作者Poul-HenningKamp是FreeBSD内核开发者之一,他认为现在的计算机比起1975年已经复杂很多。在1975年时,存储媒介只有两种:内存与硬盘。但现在计算机系统的内存除了主存外,还包括了CPU内的L1\L2\L3等cache。因此SquidCache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但操作系统可以。所以这部分的工作应该交给操作系统处理,这就是Varnishcache设计架构[4]Varnish将所有的HTTPobject存于一个单独的大文件中,该文件在工作进程初始化的时候,将其整个映射到内存中。这样Varnish在该块内存中实现一个简单的文件系统,具有分配、释放、修剪、合并内存等功能。Varnish文件缓存的工作流程:Varnish与一般服务器软件类似,分为master进程和child进程。其中master进程负责管理,child进程负责cache工作。Master进程读入命令,进行一些初始化,然后fork并监控child进程。Child进程分配若干线程进行工作,主要包括管理线程和worker线程。如图4-2-1-2所示。图4-2-1-2主进程fork子进程,主进程等待子进程的信号,子进程退出后,主进程重新启动子进程,子进程生成若干线程:⑴Accept线程:接受请求,将请求挂在overflow队列上。Work线程:有多个,负责从overflow队列上摘除请求,对请求进行处理,直到完成,然后处理下一个请求。Epoll线程:一个请求处理称为一个session,在session周期内,处理完请求后,会交给Epoll处理,监听是否还在事件发生。Expire线程:对于缓存的object,根据过期时间,组织成二叉堆,该线程周期检查该堆得根,处理过期的文件。对过期的数据进行删除或重取操作。Varnish分配缓存机制:根据所读到的object大小,创建相应大小的缓存文件。为了读写方便,程序将每个object的大小,转变为最接近其大小的内存页面倍数。然后从现有的空闲存储结构体中查找,找到最合适的大小的空闲存储块,分配给它。如果空闲块没有用完,则把多余的内存再组成一个空闲存储块,挂接到管理结构体上。如果缓存已满,则根据LRU算法,把旧的object释放掉。Varnish释放缓存机制:Expire线程负责检测缓存中所有object的生存期(TTL)。如果超过了设定的TTL,该object没有被访问,则删除该object,并释放内存。释放的过程会考虑内存的合并等操作。1・2・2分布式缓存MemcachedMemcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首开发的一款软件。现在Memcached已成为mixi、hatena、Facebook等公司提高web应用扩展性的重要缓存软件。许多web应用都将数据保存到RDBMS中,应用服务器从中读取数据并返回给用户。但随着数据量的增大,访问的集中性,读写比例的增大,会使RDBMS增加其系统开销,相应速度下降,网络延迟增大。Memcached通过缓存数据库查询结果,减少数据库读的访问次数,提高动态网站的响应速度。此外,电子商务网站的客户端cookie和服务器端session机制也可以利用Memcached解决,比如典型的购物车跟踪记录访问行为、购买问题等。也可以将其信息记录在后端的Memcached中。典型的应用如图4-2-2-1-1所/示0ST;慕一汝眄问,盅用氐务器前戟胡肚菽拒阵尸读安•ST;慕一汝眄问,盅用氐务器前戟胡肚菽拒阵尸读安•耳存衣中舅二汝轲间,应出.跟务誥从™■哄航心中債取啟柩W4Jbwrw典pMlw/Mjjink/LiflhT?gwf图4-2-2-1-1如图所示,当用户第一次访问数据库时,应用服务器从数据库中查询数据返回给用户,并且在memcached中存储一份数据。当第二次,应用服务器需要从数据库中查询数据时,首先从memcached查询数据,如果有则得到数据,返回给用户,如果没有,则再从数据库中查找数据。返回给用户,并拷贝一份数据到memcached中。
Memcached默认情况下采用名为SlabAllocator的机制分配、管理内存。SlabAllocator的基本原理是按照预先规定的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年级历史下册 第一单元 殖民地人民的反抗与资本主义制度的扩展 第2课 俄国的改革教学设计设计(pdf) 新人教版
- Unit 2 My schoolbag Part B Let's talk Let's learn大单元整体教学设计表格式-2024-2025学年人教PEP版英语四年级上册
- 《习作:我有一个想法》教学设计-2024-2025学年统编版语文三年级上册
- 6 感官总动员 教学设计-2024-2025学年科学一年级上册苏教版
- 2024年九年级化学上册 根据化学式进行计算专题教学设计 (新版)沪教版
- 2024秋九年级语文上册 第三单元 12湖心亭看雪教学设计 新人教版
- 七年级英语下册 Module 8 Story time Unit 1 Once upon a time….第2课时教学设计(新版)外研版
- 蓝光治疗护理及注意事项
- 27 故事二则《扁鹊治病》(教学设计 )-2024-2025学年统编版语文四年级上册
- 2023六年级数学上册 三 分数除法 分数除法应用题教学设计 苏教版
- GB/T 24915-2010合同能源管理技术通则
- 凸透镜成像规律动画可拖动最佳版swf
- 6层框架住宅毕业设计结构计算书
- 2016众泰t600运动版原厂维修手册与电路图-使用说明
- Sigma-Delta-ADC讲稿教学讲解课件
- 《春秋三传导读》课件
- 麻醉科进修汇报课件
- ISO-IEC 27002-2022中文版完整详细
- 【计算机应用基础试题】上海中侨职业技术大学2022年练习题汇总(附答案解析)
- 艾滋病(AIDS)经典课件
- 义务教育质量监测小学四年级 德育模拟试卷附答案
评论
0/150
提交评论