(计算机应用技术专业论文)基于多阶段的公共io服务的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于多阶段的公共io服务的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于多阶段的公共io服务的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于多阶段的公共io服务的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于多阶段的公共io服务的研究与实现.pdf_第5页
已阅读5页,还剩91页未读 继续免费阅读

(计算机应用技术专业论文)基于多阶段的公共io服务的研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 随着i n t e r n e t 的迅速发展,网络已成为人们生活工作中不可缺少的一部分。越 来越多的个人、企业、单位和组织通过i n t e m e t 获取信息、知识和进行各种贸易。 i n t e r n e t 的高并发性和内容多样的动态内容向构建健壮的网络服务器提出了挑战。 为构建高性能的网络服务器,计算机科学和工程的技术研究人员在服务器并发编 程及其i o 处理等方面不断的做出努力。 m a t t h e wd w e l s h 提出了基于阶段的事件驱动并发编程体系结构s e d a , 将应用服务处理逻辑分解成一系列的阶段,阶段间由事件队列相连接,并采用动 态资源控制来调节负载和资源使用。s e d a 综合了线程池模型和事件驱动模型的优 点,具备良好的并发和负载应对能力。本文在研究基于阶段的事件驱动并发编程 模型及常见的i o 模型的基础上,为基于阶段的事件驱动服务器设计和实现了公共 i o 服务来处理服务器网络f o 和文件i o ,最后并对使用公共v o 服务的基于阶段 的事件驱动服务器进行了对比测试,测试结果显示,公共i o 服务较目前基于s e d a 的i o 处理阶段更能提升服务器的性能,表明公共i o 服务及其资源控制和负载调 节策略的设计和实现是有效的。具体来说,本文主要完成以下几个方面的工作: ( 1 ) 研究服务器并发编程模型及其对i o 处理的影响; ( 2 ) 研究常见的i o 模型和操作系统i o 编程接口; ( 3 ) 按照阶段事件驱动模型的概念对网络i o 和文件i o 的处理逻辑进行划 分和实现,并封装成事件驱动阶段,实现异步和非阻塞的i o 操作: ( 4 ) 加入批处理控制器、准入控制器和反馈控制器等资源控制和负载调节策 略以提高i o 处理阶段的性能。在公共i o 服务全局线程资源控制和配置机制的共 同作用下,为应用提供高效的网络i o 和文件i o 处理服务; ( 5 ) 对实现的公共i o 服务进行性能测试和评估,在相同的测试环境下,通 过对测试结果的比较和分析得出:公共i o 服务的性能较现有的基于s e d a 的i o 处理阶段更具优势,表明了公共i o 服务设计和实现的有效性。 关键词:网络i o ;文件i o , 阶段:事件驱动;性能优化 a b s t r a c t a b s t r a c t w i t ht h ee x p l o s i v eg r o w t ho ft h ei n t e m e ti nt h el a s tf e wy e a r s ,i n t e m e ts e r v i c e s h a v eb e c o m eav i t a lr e s 0 1 1 l o 七f o rm a n yp e o p l e m o r ea n dm o r ei n d i v i d u a l s ,e n t e r p r i s e s a n do r g a n i z a t i o n ss e a r c hk n o w l e d g e s ,i n f o r m a t i o n sa n de a r l yo u tt r a n s a c t i o n so nt h e i n t e r n e t t h ec o n c u r r e n c yd e m a n d s ,d y n a m i c s ,a n de x t r e m e l yr o b u s t n e s si ni n t e m e t s e r v i c e sm a k eab i gc h a l l e n g et ot h es e r v e r s r e s e a r c h e r sa n dt e c h n i c i a n st a k eal o to f e f f o r tt ot h ec o n c u r r e n c yp r o g r a m m i n gm o d e l sa n di 0p r o c e s s i n gi no r d e rt ob u i l dh i g h p e r f o r m a n c es e r v e r sf o ri n t e m e ts e r v i c e s m a t t h e wd w e l s hp r o p o s e dan e ws o r w a r ef r a m e w o r kc a l l e ds e d a ,s m g e d e v e n t d r i v e na r c h i t e c t u r e , i n2 0 0 2 a p p l i c a t i o n sa r ec o n s t r u c t e da san e t w o r ko f e v e n t - d r i v e ns t a g e sc o n n e c t e d 谢血e x p l i c i tq u e u e si nt h i sm o d e l ,a n de a c hs t a g e e m b o d i e sar o b u s t ,r e u s e a b l es o f t w a r ec o m p o n e n tt h a tp e r f o r m sas u b s e to fr e q u e s t p r o c e s s i n g b yp e r f o r m i n ga d m i s s i o nc o n t r o lo i le a c he v e n tq u e u e ,t h es e r v i c ec a nb e w e l l - c o n d i t i o n e dt o a d a p t i v el o a d s e d ah a s t a k e na d v a n t a g e so ft h r e a d - b a s e d c o n c u r r e n c y m o d e la n de v e n t - d r i v e nc o n c u r r e n c ym o d e lt om e e tt h em a s s i v e c o n c u r r e n c yd e m a n da n dp r o m o t et h er o b u s m e s so fs e r v e r s t o a d a p t i v el o a d b y s t u d y i n gs t a g e de v e n t - d r i v e na r c h i t e e t t t r ea n dc u r r e n ti om o d e l s ,t h ed e s i g na n d i m p l e m e n t a t i o no fc o m m o ni os e r v i c ef o rt h es e r v e r sb a s e do ns e d aa r ed e s c r i b e di n t h ed i s s e r t a t i o n t h ee x p e r i m e n t a lr e s u l t ss h o wt h a tt h eo p t i s e r v e rw ed e v e l o p e dh a s b e t t e rp e r f o r m a n c eo ni oo p e r a t i o nt h a nt h ew e l l k o w nh a b o ow e bs e r v e rd o e s i n d e e d ,t h ef o l l o w i n g sh a v e b e e n d o n ei nt h i sd i s s e r t a t i o n : ( 1 ) s m d y o nc u r r e n tc o n c u r r e n c yp r o g r a m m i n gm o d e l sa n dt h e i ri m p a c t so ni o o p e r a t i o n ( 2 ) m a k ed e e pr e s e a r c ho ni om o d e l sa n di op r o g r a m m i n gi n t e r f a c e sp r o v i d e d b yo p e r a t i n gs y s t e m s ( 3 ) t h eo p e r a t i o no fn e t w o r ki oa n df i l ei oh a sb e e nd e s i g n e da n di m p l e m e n t e d a se v e n th a n d l e r si na c c o r d a n c ew i t hs e d a m o r e o v e r , t h ee v e n th a n d l e r sh a v eb e e n w r a p p e di n t os t a g e st op r o v i d ea s y n c h r o n o u si 0o p e r a t i o nf o ra p p l i c a t i o n s ( 4 ) b yp e r f o r m i n ga d m i s s i o nc o n t r o l ,b a t c h i n gc o n t r o la n df e e d b a c kc o n t r o lo nt h e a b s l 风气c t s t a g e so fc o m m o ni os e r v i c e , t h ep e r f o r m a n c eo ff oo p e r a t i o nh a sb e e ni m p r o v e d i n c o o r p e r a t i o nw i mg l o b a lt h r e a dr e s o u r c ec o n t r o la n da l l o c a t i o nm e c h a n i s m ,t h e c o m m o nf os e r v i c ef o rs e r v e r sp r o v i d e sh i g h e rp e r f o r m a n c et h a nc u r r e n tf oo p e r a t i n g s t a g e so ni oo p e r a t i n g ( 5 ) t h ec o m p a r i s o nt e s t so ft h es e r v e r sb a s e do f fd i f f e r e n tf oo p e r a t i o nh a v eb e e n d o n e t h ee x p e r i m e n t a lr e s u l t si nt h es r m et e s tc o n d i t i o n ss h o wt h a tt h ec o m m o nf o s e r v i c ec a ni m p r o v et h ep e r f o r m a n c eo ft h es e r v e r l 3o ni oo p e r a t i o n k e y w o r d s :n e t w o r ki o ;f i l ef o ;s t a g e s ;e v e n t - d r i v e n ;p e r f o r m a n c eo p t i m i z a t i o n l i i 主要符号表 a m 呼e d a i o h t t p i o n b i o n i o p o s s e d a s i g l 0 s p e d t c p t s 主要符号表 a s y m m e t r i cm u l t i - p r o c e s se v e n t d r i v e n ,非对称多进程事件驱动服 务器架构 a s y n c h r o n o u si o ,异步i o h y p e rt e x tt r a n s f e rp r o t o c o l ,超文本传输协议 i n p u t & o u t p u t ,输入输出 n o n b l o c k i n gf o ,非阻塞i o n e wi o ,j a v a 语言中的“新 i o 编程接口 p o r t a b l eo p e r a t i n gs y s t e mi n t e r f a c ef o rc o m p u t e re n v i r o n m e n t ,计算 机环境可移植操作系统界面 s t a g e de v e n t - d r i v e na r c h i t e c t u r e ,基于阶段的事件驱动体系结构 s i g n a li n p u t & o u t p u t ,信号驱动i o s i n g l ep r o c e s se v e n t d r i v e n ,单进程事件驱动服务器架构 t r a n s m i s s i o nc o n t r o lp r o t o c o l ,传输控制协议 t a b us e a r c h ,禁忌搜索法 v l i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:叠i 签名:盈蓥 日期:w ,明年舌月1 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:毕导师签名:霉蛭 日期:非易月f 日 第章引言 1 1 研究背景和意义 1 1 1 研究背景 第一章引言 随着i n t e m o t 的迅速发展,网络已成为人们生活工作中不可缺少部分。越来越 多的个人、企业、单位和组织通过i n t e r a c t 获取信息、知识和进行各种贸易提高效 率。据统计,截止到2 0 0 8 年底,全世界范围内的i n t e r n e t 用户数已经超过了1 5 亿, 占世界总人1 :3 的2 3 6 ,相比2 0 0 0 年增加了3 3 8 1 t 1 1 。来自第2 3 次中国互联网 络发展状况统计报告显示,截至2 0 0 8 年底,中国网民规模达到2 9 8 亿入,较2 0 0 7 年增长4 1 9 ,互联网普及率达到2 2 6 ,略高于全球平均水平( 2 1 9 ) 。继2 0 0 8 年6 月中国网民规模超过美国,成为全球第一之后,中国的互联网普及再次实现 飞跃,赶上并超过了全球平均水平 2 1 。 庞大的用户数字带来的是更加庞大的信息量。美国国会图书馆印刷品的信息 量不过是1 0 万亿字节。2 0 0 7 年,互联网流动的信息量,包括访问、下载等的数据, 每天都是美国国会图书馆信息量的6 4 0 0 0 倍。 i n t e m o t 所提供的以w e b 服务为代表的网络服务以其直观、方便的使用方式和 丰富的表达能力,已逐渐成为i n t e r a c t 上最主要的信息发布和传输方式,成为影响 互联网快速发展的主要因素【3 】。然而,随着i n t e m e t 的不断发展和用户数量的急剧 增加,人们对构建健壮的和具备高并发应对能力的w e b 服务器需求越发渴望。用 户数的几何增长和人们对构建健壮的w e b 服务器需求问的矛盾日益突出【4 1 。为了 解决这对矛盾,计算机科学和工程的技术研究人员从硬件和软件两个方面不断做 出努力。在硬件方面,性能强劲的计算机不断被生产出来;在软件方面,以a p a c h e t 5 】 为代表的服务器构架设计和实现机构不断地进行研究以解决问题。 i n t e m e t 所提供的服务已经深入到了社会生活的各个领域,包括股票交易、在 线媒体广播、在线购物、及时消息、文件共享和网络游戏等等。它所提供的服务 不再仅仅是单一的静态内容,各种动态的i n t e r a c t 服务增加了系统处理每个i o 请 求的资源消耗。i n t e m e t 爆炸性的增长和服务的多样性不仅增加了服务器处理i o 请求的资源消耗,同时也增加了提供这些i n t e r n e t 服务的系统复杂性。提供i n t e r n e t 电子科技大学硕士学位论文 服务的系统越来越复杂,一个典型的网络应用系统包括了w e b 服务器、高速缓存 系统、中间件系统、数据库系统和逻辑处理系统【6 】等。与此同时,对网络需求的指 数级增长也使i n t e r n e t 服务的可扩展性和健壮性受到了前所未有的挑战。 1 1 2 研究意义 如上,i n t e m e t 用户的快速增加和规模的不断扩大向设计和构建高性能网络应 用服务器提出了挑战。为服务器提供高性能的公共i o 服务操作( 包括网络i o 和 文件i o ) 对构建高性能的网络应用服务器,并使其能应对高并发的i n t e m e t 环境, 高效地处理多样内容和提高网络应用服务器的健壮性都具有特殊的意义和重要的 作用。 ( 1 ) 高并发性。网络人口的增加使i n t e m e t 应用不得不支持前所未有的网络 并发需求和在短时间里会急剧增加的不可预测的网络v o 请求。由e o m s c o r e 的一 项调查报告显示2 0 0 8 年4 月谷歌独立用户访问量达1 4 1 1 亿,同比增长1 8 ;雅 虎为1 4 0 6 亿,同比增长7 ;微软排名第三,独立用户访问量为1 2 1 亿 7 1 。2 0 0 5 年1 0 月伴随着“神舟六号”的成功发射,新浪网的日访问量突破了4 5 亿页读数, 导致不得不在北京、上海、广州、南京、西安、沈阳等全国中心城市增加了1 2 0 台服务器来应对急剧增加的网络请求【8 】! i n t e r n e t 的高并发性向服务器处理用户i o 请求提出了更高的要求。 ( 2 ) 内容的多样性。如前所述,i n t e m e t 所提供的服务不再仅仅是单一的静态 内容,它包括了各种各样的动态元素【9 】。j s p 、a s p 等动态页面在提供给用户更好 的服务体验的同时也增加了服务器处理i o 请求时的资源消耗,而且在处理每个网 络请求的同时往往会涉及到加密、解密、数据库操作以及业务逻辑的交互等过程, 这些都大大增加了系统进行i o 操作的丌销。一个典型的j 2 e e 应用更是如此i i o j ! 相较于静态页面而言动态页面对系统资源需求的预计十分困难。在使用了流行的 w e b 2 0 技术的网页上动辄就有上千行的代码【l 。与此同时,对服务器而言动念页 面的内容也不易被加入到高速缓存中,这也增加了系统i o 处理的资源消耗。 另外,i n t e m e t 提供的服务也越来越多样化,从股票交易到视频会议,从文件 共享到在线电影等等,在i n t e m e t 深入到了社会生活各个方面的同时也增加了服务 器处理各种网络请求的i o 负载。 ( 3 ) 健壮性。在一定时期内,对i n t e m e t 服务的需求会远远超过其平均负载 并达到或超过服务的承受范围,导致服务器不能正常工作以致瘫痪。引起需求量 2 第一章引言 急剧增加的原因有很多,包括恶意攻击( 如d o s ) 等等。这样的例子有很多:1 9 9 9 年2 月维多利亚内衣秀在线广播有超过1 5 0 万的用户同时在线观看导致该站点不 堪重负而瘫痪等等。 处理系统高负载的传统做法是提供更多的资源即增加服务器的绝对数量【l z l 。 然而,当系统负载处于平均水平时多余的服务器资源将被浪费,资源利用率较差。 另一方面,购置大量服务器的代价较高。相对于传统做法,理想的处理方式是服 务器能意识到过载的情况并能够进行处理,如降低服务质量或通过向用户发送简 单服务包和信息来屏蔽负载等。 为了保持市场竞争各个网络服务公司不断地加入新的功能和特性,这也增加 了系统负载,使系统的健壮性下降。 1 2 服务器并发编程模型及i 0 处理研究现状 网络服务器的重要方面就是提供高并发的请求处理机制,并必须能够满足来 自用户大量的、变化频繁的并发请求。同时,处理并发请求的程度也是衡量网络 服务器性能的重要指标。用户请求的高动态性和网络环境开发性向系统资源提出 了极大的挑战。服务器并发编程模型及其f o 处理策略影响着服务器性能,与此同 时,服务器并发编程模型也决定了服务器采用的f o 处理方式。本节将对常见的服 务器并发编程模型、f o 处理策略及其对服务器性能的影响进行介绍。 1 2 1 服务器并发编程模型 1 2 1 1 线程进程模型 线程进程模型是最常见的一种模型。这种模型的主要思想是为每一个用户请 求分配一个线程或进程,当用户的请求处理完成以后该线程或进程的生命周期随 之结束。 现在的编程语言和编程环境对这种编程模型有很好的支持,现在的商业操作 系统对这种编程模型也提供了良好的支持。同时由于实现思想简单,这种编程模 型易于实现。网络应用开发人员能够容易地写出请求处理代码而不用太多在意模 型框架的束缚。但是,这种编程模型也有其天生的缺陷,随着用户并发请求的增 加,系统资源消耗也会增加,系统的请求处理能力会急剧下降。这种编程模型并 没有提供合适的资源控制机制,缺乏对资源的有效管理【b 】。 电子科技大学硕士学位论文 为了解决系统线程数目急剧增加带来的系统资源消耗问题,许多网络服务器 都加入了线程池进程池机制,通过限制线程池进程池的大小来防止系统过载,常 见的有a p a c h e 5 1 、m i c r o s o f ti n t e r n e ti n f o r m a t i o ns e r v 一1 4 1 、n e t s c a p ee m e t p r i s e s e n ,e 一1 5 1 、b e a w e b l o g i c 1 6 1 和i b mw e b s p h e r e t l7 】等。但是,当线程池中的所有线程 都在工作时服务器不会分配多余的线程处理来自用户的网络请求。当操作系统的 等待队列溢出时用户请求会被丢弃掉,由于t c p 采用指数退避( e x p o n e n t i a l l yb a c k o f f ) 的超时重传机制【1 8 】这样会导致用户处于长时间等待,用户体验下降。在服务 器中,i o 处理往往成为系统性能瓶颈而线程进程模型服务器在系统高负载下经常 会出现进程等待i o 处理完成的情况,当新的用户请求达到时则该请求必须等待, 系统性能降低【1 3 】。另外,线程池大小的确定较难:若取得较大系统负载会增加, 太小系统资源利用率不高。 1 2 1 2 事件驱动模型 为了解决线程进程编程模型中存在的问题,事件驱动模型应运而生。这种处 理并发的服务器编程模型中服务器由很小数量的线程组成,这些线程不断地重复 处理来自队列的不同类型事件( 或请求) 事件( 或请求) 可能由系统产生也可 能由应用产生,这些事件( 或请求) 是一种“触发器 ,代表了相应事件( 或请 求) 的处理过程应该开始执行了。 在事件驱动模型中,每个事件( 或请求) 由一个f s m 来表示( f s m 是f i n i t es t a t e m a c h i n e “有限状态机 的缩写) 。f s m 代表了能在该请求上执行的一系列处理步 骤。当请求的处理事件到达时,它会被分派到一个线程上根据当前状态进行请求 处理,就像工厂中的流水作业一样。例如,一个静态网页请求的f s m 有如下状态: ( 1 ) 从n e t w o r k 中读取数据: ( 2 ) 处理h t r p 头( 解析请求) ; ( 3 ) 查找请求对应的磁盘文件; ( 4 ) 读取该文件; ( 5 ) 格式化响应包; ( 6 ) 向网络发送响应。 事件驱动模型被许多系统采用,常见的有f l a s h t l9 1 ,t h t t p d t 2 0 1 ,z e u s 【2 1 1 和 j a w s w e b 服务器【捌等。由于每个f s m 的状态上下文比线程模型要简单地多、负 载也小,因此采用事件驱动模型来管理和处理网络并发请求比线程进程模型要容 易的多而且系统资源需求比线程模型小。 4 第一章引言 然而,若长期停留在一种状态上也可能会因为系统资源瓶颈而导致性能的下 降。更现实的是,事件驱动模型难于编写应用代码,稍有差错就会引起诸多问题, 事件处理间的调度困难,调度器的编写既要高效又不能占用太多系统资源。这种 编程模型一个重要的限制就是为了避免事件处理线程停滞、保证处理大量请求的 公平性,事件处理代码必须短而且能够完成事件处理。这需要非阻塞和异步i o 的 支持。 事件处理线程仍会因为其它事件而发生阻塞,如中断、页面错误、垃圾回收 等,因此采用事件驱动模型时应十分小心。现有的事件驱动模型可分为两大类: 单进程事件驱动模型( s p e d ) 和非对称多进程事件驱动模型( 心佃e d ) 。 z e u s 2 l 】就是一种基于单进程事件驱动模型( s p e d ) 的服务器,它采用由事件 驱动的单个服务进程来并行处理多个h t i p 请求,如图1 1 。服务器通过非阻塞的系 统调用实现异步的i o 操作。由于只有一个w e b 进程,即单一地址空间,可方便 应用w e bc a c h e 。技术,更加不存在同步问题,进程调度和任务极轻。尤为突出的 是其处理并发请求的能力仅受限于w e b 进程所能使用的句柄数( 至少数万个) 。然 而,采用一个进程服务所有h 仕p 请求的缺陷也是相当明显的。当进程对文件进行 访问时,如果待访问的文件内容不在文件c a c h e 而在磁盘上时,仍会产生阻塞现 象,从而暂时挂起进程,导致c p u 空转,直到磁盘访问结束。 单进程事件驱动框架 图1 - 1 单进程事件驱动模式示意图 针对s p e d 模型的缺陷。p a i 在1 9 9 9 年底提出一种非对称多进程事件驱动 ( a m p e d ) 模型,并在此基础上实现了f l a s h 服务器【l9 1 。a m p e d 在s p e d 模型的基 础上增加了一些h e l p e r 进程,如图1 2 。当主进程打算r e a d ( ) 一块文件内容时,若 该文件内容不在文件c a c h e 而在磁盘上时,主进程就把磁盘访问任务交给h e l p e r 进程完成。当h e l p e r 进程把文件内容读到内存后,主进程再r e a d ( ) 该块文件内容。 这时,由于文件内容己在文件c a c h e 里,主进程调用的r e a d ( ) 就不会阻塞了。通过 这种方法把阻塞调用r e a d ( ) 变为了非阻塞。以f l a s h 为例,它定义了6 个h e l p e r 进 程。其中2 个h e l p e r 进程从磁盘上读文件的i n o d e 信息,4 个h e l p e r 进程从磁盘 电子科技大学硕士学位论文 上读文件的内容尽管进程切换不会给操作系统带来太大的负担,但h e l p e r 进程的 执行却会影响主进程对c p u 、网络、磁盘资源的及时占有,进而增加主进程响应 客户请求的延迟,降低w e b 服务器的性能,主进程通过管道向h e l p e r 进程提交请 求。主进程向h e l p e r 进程每次只提交一个磁盘访问请求,当h e l p e r 完成磁盘访问 请求后,将向主进程发送一个响应,主进程收到响应后才会提交下一个磁盘访问 请求。因此,这种进程间的同步关系使得最多只有2 个h e l p e r 进程为2 个h t t p 请 求读文件的i n o d e 信息,只有4 个h e l p c r 进程为4 个h t t p 请求读文件的内容。在 最坏情况下,f l a s h 所能并行处理的h 卸请求数将受限于h e l p e r 的个数。 显然相比s p e d 模型,a m p e d 模型拥有更好的性能,但它的结构不够灵活对 负载的控制只能是粗粒度的,并且多个h e l p e r 进程的存在将影响主进程对c p u 资 源的及时占有,主进程和h e l p e r 进程间存在同步关系。 - w a i tf o rd a t a applicstion c o k p e y 功d e a 。t a u 詈 f ,r o c e s s卜c o p y c o m p l e t e 图1 3 阻塞i o ( 2 ) 非阻塞模式( n o n b l o c k i n gi 0 ) 应用程序向内核发送一个i 0 请求,若网络接口没有可供操作的数据,系统向 用户返回一个错误,让用户在将来合适的时候再请求i 0 操作,从而避免进程阻塞, 这就是非阻塞模式,如图1 4 所示。 铆c 渤 k e r n e l ,r e a d1 = = 立n od a t i ar e a d ) 、 p r o c e s s 1 i r e p e a t e d l yc a l l sl t e a df d n od a t ar e a a y w a i tf o rd a t a r e a d , 而t l 口g l f 打:o no k l r e a d d a t ar e a d 3 c o p yd a t a 北咖l 哩慧挚 p r o c e s s d a t a 一c 。p y c a m p l e c e 图1 4 非阻塞i 0 ( 3 ) 多路复用i o w om u l t i p l e x i n g ) 虽然非阻塞i 0 可以避免进程进入阻塞状念,但不知何时可以进行i o 操作。 只能通过不断地发送i 0 请求进行测试,直到能成功地完成i 0 操作,它会浪费系 7 电子科技大学硕士学位论文 统资源。多路复用i o 提供了一个解决方法。多路复用i o 模型本质上是基于阻塞 i o 的。该模型应用程序要不断地向内核写入s o c k e t 描述符,导致过多的用户空间 和内核空间的数据拷贝,且内核还要不断扫描s o c k e t 集来检测s o c k e t 状态,若多 数s o c k e t 没有发生事件,就会浪费系统资源。多路复用i o 模型如图1 5 所示。 a p p l i c a t i o n k e r n e l rs e l e c t = n o d a t ar e a a y 、 鹞血 1 l w a i t f e ed acallto鲫lect 诅 1广 瞄 p r o c e 鼹b l o c k s 卜 r e a d i = = 立d a 诅r 粤。嘎黟出臼弋 嚣_ 上 屯等 丑吐oa p p 址a 乜i 7 f苗位li 袋r h 4 f l f e f lp r o c e s s 出臼卜一 c o p yc o m p e t e j 图1 5 多路复用i o ( 4 ) 信号驱动i o ( s i g i o ) 信号驱动i o 能实现无阻塞地进行i o 操作。可以进行i o 操作时,系统异步 通知进程,而进程无需阻塞等待i o 操作的完成或网络事件的发生。这比前面几种 i o 模型更具灵活性。但在多进程服务器中,信号驱动i o 存在一个问题,即信号 在产生和传递到目的进程之间,状态标志可能发生改变。信号驱动i o 如图1 - 6 所 示。 a p p l i c a t i o n k e r n e l 硒瑰i t f 缸d a 组 c 啊d a t af t c m a k e t n e lu 疆r 幽1 6 信号驱动i o ( 5 ) 异步i o ( a s y n c h r o n o u si o ) 异步f o 2 5 】是p o s i x 规范的一部分。当系统完成i o 操作时,系统通知进程操 作结果。这种机制容易和信号驱动i o 混淆,两者的区别是:异步i o 返回时,i o 操作已经完成,返回的是i o 操作的结果;信号驱动i o 只是通知进程可以丌始进 行i o 操作,进程得到这个信号后才丌始i o 操作。使用异步i o 提高了服务器处 理i o 请求的效率,提高系统资源利用率,在基于阶段的事件驱动并发编程模型中 8 | 1 l 一 一一一三 一一 一砌 哆:笋| | l 跚埯 一一 一一一 第一章引言 使用异步i o 在实现和性能更具有优势【2 3 1 ,如图1 7 所示。 厂肚一一 、1 0产w a i tf o rd a t a jd a t a r e a d y p r o c e s s c o p y d a t a c o n t i n u ee x e c u t i n g1 【s ;锄,c l 卜臀气? 图卜7 异步i 0 从网络服务的本质上看,服务器总是在处理两种i o 以完成复杂的功能:网络 i o 和磁盘( 文件) i 0 1 2 6 1 。以上i 0 模型为我们设计高性能网络服务提供了参考。 ( 1 ) 网络i o 采用阻塞的网络i o 处理模型较为直观:服务器端为每个请求的客户连接建立 一个线程或者进程。若有大量客户请求连接,系统就建立大量线程或者进程,线 程间的上下文切换使系统性能大受影响。这种模型适合并发数不多或服务器负载 不大的情况。 在目前的高性能服务器中,采用非阻塞网络i o ,事件驱动模型即异步非阻塞 模型【2 7 1 。这种模型的核心是事件驱动机制。目前常用s e l c d 2 8 1 ,p o l l 2 9 1 系统调用来 完成事件驱动。在大量的并发连接中,如果冷连接较多,s e l e c t 的性能会因为并发 数的线性上升而成平方速度的下降。 相对s e l e c t ,p o l l 根据文件描述符组织信息带来了较高的效率,但是在p o l l 返 回的时候所有的s t r u c t p o l l f d 结构都被拷贝回内核空间,依然有不必要的拷贝操作。 因此s e l e c t 和p o l l 并不是处理网络i o 的最佳方案。从l i n u x 2 5 丌始,出现了一 个新的系统调用e p o l l 3 们,它不仅可以完成s e l e c t p o l l 的功能,而且性能更高功能 更强。e p o l l 的详细情况将在第三章中详述。 ( 2 ) 磁盘( 文件) i o 磁盘i o 存在同步异步和阻塞非阻塞的四种组合模式。在l i n u x 2 5 以前的版 本中,非阻塞f o 特性仅对网络句柄有效。对文件句柄访问,当待访问的文件内容 不在文件c a c h e 而在磁盘上时,仍会产生阻塞现象,从而暂时挂起进程,导致c p u 空转,直到磁盘访问结束导致系统性能下降。 l i n u x 2 6 提供了异步磁盘l j o 的内核级支持,但这种内核级的异步i o 机制并 9 电子科技大学硕士学位论文 不支持网络套接字1 ,对套接字请求对应也会转为同步操作【3 0 1 。虽然有些p o s i xa i o 的l i n u x 操作系统1 3 l j 提供了非阻塞的文件读操作,但是却使用了一个内核线程池 来进行写操作,而且也没有提供测试文件操作是否准备好的机制和方法。 基于对服务器并发编程模型和i o 处理的现况研究,本文为具有较大性能优势 的基于阶段的事件驱动( s e d a ) 服务器【3 2 1 ,设计和实现了高效的通用异步及非阻 塞f o 处理策略,包括了网络f o 和磁盘i o 。为构建高并发、内容多样和健壮的 网络服务器提供高性能的公共i o 服务处理模块。 1 3 课题主要研究内容 本论文的研究工作得到了科技部国家“十一五科技支撑计划”现代服务业服 务交互支撑平台若干关键技术研究( 2 0 0 6 b a h 0 2 a 0 4 0 7 ) 的资助。现代服务业主要 面向社会公众提供服务,用户群及其庞大,例如网络教育、数字社区等服务对平 台的并发处理能力提出了很高的要求。课题要求建立一个健壮、高效的平台以便 处理大量的在线用户同时请求。同时,建立基于s e d a 技术的复杂系统调优机制, 优化系统性能,使平台应具备良好的峰值应对能力。 在课题研究过程中,为了给网络服务器提供高效的f o 处理策略,能使其更好 地应对高并发、内容多样的i n t e r n e t 环境,提高服务平台的健壮性和性能。按照课 题要求,本人同团队成员一起,负责研究、设计及实现了基于阶段的事件驱动 ( s e d a ) 服务器的公共f o 服务( 网络i o 和文件i 幻) ,并完成了如下工作: ( 1 ) 研究了现有的服务器并发编程模型及对其i o 操作的影响: ( 2 ) 按照阶段事件驱动模型的概念对网络i o 和磁盘i o 处理逻辑进行划分 和实现,并封装成了事件驱动阶段,实现异步的和非阻塞的f o 操作; ( 3 ) 为各事件驱动阶段加入批处理控制器、准入控制器和反馈控制器等调控 策略提高事件处理阶段的性能和负载调节能力。在全局线程资源和配置机制的共 同作用下,为应用提供高性能的网络i o 和文件i o 处理服务; ( 4 ) 对设计和实现的公共i o 服务进行了性能测试和评估。在相同的测试环 境下,通过对测试结果的比较和分析得出结论。 套接,足s o c k e t 的中文译名之一甘前,周内存将l e 翻译为。套接u ”,“掭u 层”的。奉文采用“奁 接,”这种翻译。 1 0 第一章引言 1 4 论文结构 论文共分七章,结构如下: 第一章为引论部分,主要介绍了课题的研究背景,研究意义,服务器并发 编程模型,i o 模型以及服务器编程模型对i o 操作的影响等; 第二章详细介绍和分析了高性能服务器并发编程模型s e d a 及其对i o 操 作的影响; 第三章详细介绍了常见的i o 编程接口及其性能差异,同时介绍了公共i o 服务的总体设计; 第四章介绍了进行网络i o 处理的异步套接字库的设计和实现情况,并对 其资源控制和负载调节机制进行了深入研究; 第五章详细介绍了进行文件i o 处理的异步文件i o 库的设计和实现情况; 第六章对公共i o 服务的代码完成情况进行了介绍,并对其性能进行了对 比测试,分析了测试结果,得出测试结论; 第七章是对本课题研究的总结,并对进一步的工作进行了介绍和展望。 电子科技大学硕士学位论文 第二章阶段事件驱动模型 设计健壮的、高并发的、具有负载调节能力的及对用户公平的网络服务器的 一个障碍就是现代操作系统的设计和构建模式。目前大多操作系统都是多道批处 理系统,操作系统虚拟化硬件资源为应用提供透明的服纠”l 。操作系统虚拟化的 特点限制了应用有机会参与系统资源调节,也不能得到系统资源状况从而使自己 的行为适合正在变化系统条件。 特别地,操作系统对i n t e r n e t 服务有以下影响: ( 1 ) i n t e r n e t 服务对网络请求的处理不是任意的而是有区别对待的。但是,操 作系统作为底层系统会处理任意的来自i n t e r n e t 请求而不对它们进行区别对待; ( 2 ) 操作系统对高并发的限制。在高并发的情况下,i n t e r a c t 服务为了获得高 性能通常都愿意放弃对应用透明虚拟化资源。然而,目前的操作系统都没有提供 这样的功能或模型; ( 3 ) 操作系统对i o 的限制。现代操作系统为了提高系统性能大多使用非阻 塞的i o 接口。虽然操作系统没有为磁盘读取提供非阻塞的i o 接口但是提供了非 阻塞的套接字接1 2 1 ,比如在l i n u x 操作系统下i 拘d e v p o l l 事件分发机制【2 6 】和u n i x 操作系统下的s e l e c t ( ) 和p o l l ( ) 接口【2 1 7 】等等。当网络i o 流增大时非阻塞i o 接口的 性能会下降,t c p i p 的堆栈溢出,对于用户来说服务的公平性降低。 i n t e r a c t 服务为了提高服务性能和质量的需要对系统资源进行直接的调度和管 理,然而操作系统固有的特性如虚拟化等并不能为应用提供这样的管理权限。 操作系统提供对资源管理的粗粒度调度。以线程模型为例,当系统资源不断 被消耗、负载不断增加时,为了保持系统的稳定和高效通常的做法是“杀死 某 些线程或进程。这种j f l 粒度的资源管理办法并没有将用户请求考虑到其中,而只 是考虑到了对单个线程( 或进程) 的调度控制,并且很可能会影响到其它通信线 程( 或进程) 的事务处理和系统的稳定性。 为了修整操作系统带来的这些问题,一些系统尝试为上层应用提供对资源更 大的控制能力,如s p i n l 2 引、e x o k e m e l 【2 9 】和n e m e s i s 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论