为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

过载服务器的接入控制

2017-11-13 10页 doc 26KB 13阅读

用户头像

is_260251

暂无简介

举报
过载服务器的接入控制过载服务器的接入控制 第33卷 VoL33 第lO期 No.1o 计算机工程 ComputerEngineering 2007年5月 May2007 ?网络与通信?文章编号:l00o—3428(2007)lo__oll4__03文献标识码:A中圈分类 号:TP393 过载服务器的接入控制 牛广锋,林彤,王东安,葛敬国,南凯 (中国科学院计算机网络信息中心,北京100080) 囊要:在过载条件下,Web服务器的响应时间会增加,吞吐率会降低,有必要采用接 入控制.通过对TCP传输机制和Linux内核实现过...
过载服务器的接入控制
过载服务器的接入控制 第33卷 VoL33 第lO期 No.1o 计算机工程 ComputerEngineering 2007年5月 May2007 ?网络与通信?文章编号:l00o—3428(2007)lo__oll4__03文献标识码:A中圈分类 号:TP393 过载服务器的接入控制 牛广锋,林彤,王东安,葛敬国,南凯 (中国科学院计算机网络信息中心,北京100080) 囊要:在过载条件下,Web服务器的响应时间会增加,吞吐率会降低,有必要采用接 入控制.通过对TCP传输机制和Linux内核实现过 程的分析,该文提出了接入控制保护机制,描述了它的设计和实现.通过实验,表明 它能够有效地降低服务器过载带来的影响. 关悯:接入控制;TCP标识;过载 AdmissionControlinOverloadedbServers NIUGuangfeng,LINTong,WANGDongan,GEJingguo,NANKai (ComputerNetworkInformationCenter,ChineseAcademyofSciences,Beijing100080) [Abstract]ItisbecomingessentialtoprotectWebserversagainstoverloadbyprovidingadmis sioncontro1.Thispaperpresentsthedesignthat performsadmissioncontrolbasedonTCPheader,andimplementsitintheLinuxOS.Therear esixl—bitflagsinTCPheader.Thepacketswithflags, suchasACKpackets,aremoreimportantthantheapplicationrequestpackets.Theexperimen tsdemonstrateitseffectiveness,andshowthatthe approachisefficientduringoverload. [KeywordslAdmissioncontrol;TCPflags;Overload 十几年来,Internet上的信息量,用户数都呈指数级增长, 电子商务,在线银行等新业务迅速得到应用.对Internet上 的Web服务器和网络架构提出了新的挑战.人们不仅要求它 满足正常的工作负载需求,而且在超负荷时期,依然要保持 较高的吞吐量.一般情况下,Web服务器能够满足负载要求, 然而HTTP请求的流量经常以突发方式到达,使服务器过载. Web服务器过载情况分为两种:一种是瞬时过载,即服 务器暂时的过载.文献【4】指出HTTP请求的通信量分布是自 相似的,存在大量突发,会造成服务器短时间过载.这种情 况持续时间一般很短,服务器很快恢复到正常性能.瞬时过 载基本上不会影响服务器性能,本文不进行处理.另一种是 服务器长时间的过载,一般是由某一特殊事件引起的,比如 服务器受到拒绝服务攻击或者某个热点事件的发生等. 在高负载情况下,Web服务器性能急剧下降,一个或几 个重要的服务器资源——网络接口,硬盘,内存和CPU出现 不足.在一些情况下,也与操作系统的实现机制有关.操作 系统以中断方式完成I/O事务,在过负载情况下性能很差, 会发生"活锁(1ivelock)"现象.以中断方式执行的任务比 一 般的任务有更高的优先级.如果中断发生的频率过高,就 会导致系统把大部分时间都用在中断处理.系统的吞吐量迅 速下降,甚至降至0,这种情况被称为"活锁".虽然没有发 生死锁,但是系统没有执行任务.如果网络中数据包到达服 务器的频率过高,就会引起服务器在中断上浪费太多的时间, 降低吞吐率J. 为了减轻或避免服务器过载所带来的影响,有必要实行 接入控制.本文描述如何在中断处理程序中根据TCP包头信 息实现接入控制,并给出了设计和实现. l相关研究 为了提高服务器处理性能,避免服务器过载,在接入控 制方面有许多相关研究.文献【5】要求Web服务器对HTTP请 一 114_一 求做接入控制,效率较低.文献【2】在内核栈上控制服务 器所能接收到的请求数据包,包括控制TCP连接数和HTTP 请求.这两种的弱点是数据包需要经过复杂协议栈. 文献【l,2,6】讨论了在接收中断处理过程中实现接入控 制.文献【l,2】根据HTTP包头信息做接入控制,由于解析 HTTP包头相对比较复杂,不适于在硬件驱动程序中使用. 文献【6】对活锁现象作了详细分析,并根据SYN信息做接入 控制,但是只简单控制SYN数据包并不能避免服务器过载. 2接入控倒实现 实现接入控制最根本的两个问题是"在什么位置实现接 入控制和依据什么信息完成接入控制".本文的接入控制在数 据包接收中断处理中实现,依据TCP包头信息和系统负载决 定如何处理数据包一一丢弃或继续. 图1接收中断处理过程 作者倚介:牛广锋(1976一),男,硕士,主研方向:计算机网络体系 结构;林彤,博士生;王东安,葛敬国,博士;南凯,副研究员 收稿日期:2006—05—25E?mail:niuguangfeng@cnic.cn 图1虚线部分是本文要增加的接入控制机制.在中断处 理中实现接入控制,尽可能早地放弃不能完成的任务,既可 以有效防止活锁,又提高了效率.接入控制部分只作简单分 析——分析TCP包头的信息,判断TCP包类型,对不同类 型的数据包采用不同的处理方式. 2.1数据包接收过程 由于接入控制是在中断处理中实现,因此简要描述Linux 内核处理数据包的过程.过程可以分为3个阶段:网卡中断 处理,软中断处理和应用程序处理.每两个相邻的阶段之间 都有一个或多个输入队列相联系. 当网卡接收到数据包,它先利用DMA传送到接收缓冲 区环中,然后使用中断通知内核.网卡中断处理程序申请新 的sk—buf,把数据包拷入,再把sk—buf加入到sk—buf收包队 列中.内核的软中断机制调用net—rx—action()函数分发数据 包.ip—rcvO处理ipv4数据包.数据包经过网络层的处理,最 后到达传输层,TCP数据包由tcp—v4一rcv0处理. TCP数据包的处理比较复杂,分为3种情况:第1种是 TCP连接没有完全建立,由函数tcp—rcv—state—process()处理, 例如当收到SYN包;第2种是处理普通数据包,经过一系列 处理后,负荷会被放入数据队列(socket'Sreceivequeue);第3 类是处理控制信息. 图1显示了在LinuxKernel2.4.X中,rtl8139too网卡接 收到数据包转交给内核的过程.网卡在接收到数据包之后触 发中断,引发处理函数rtl8139_interruptO的调用.如果是接 收数据包中断,下一步就调用rtl8139一rx—interrupt()函数.主 要工作是分配新sk—buf空问,把数据包插入sk_buf收包队列 尾部.在netif_rx0函数中,对sk—buf收包队列长度做检查, 使其被限制在某个固定值范围之内. 如果发现队列已满,就直接释放sk—buf,即丢弃数据包. 当Web服务器过载时,队列长度必然会达到限定值,导致大 量数据包被丢弃. 2.2传输层信息控制 采用TCP包头信息实现接入控制,主要根据标志字段来 识别功能不同的数据包.TCP是有状态的可靠传输协议,根 据它的特点,本文使用了下面的两条规则. (1)及时拒绝新建连接请求,而不是发生过载时释放连 接.Web服务器过载的一个重要因素是TCP连接数过多,服 务器无法及时处理浏览器发来的HTTP请求.每一个TCP连 接都要占用许多系统资源,如果一个连接要被释放,最好的 是在系统发生过载之前拒绝部分连接.丢弃浏览器所发 ,可以控制与Web服务 送的连接请求包,即第1个SYN包 器连接的浏览器数量. (2)丢弃浏览器发送的负荷数据包,接收带有控制信息的 数据包.浏览器发送的负荷数据包绝大多数是HTTP请求. 在过载时,丢弃负荷数据包实际是暂时减少负载. TCP完成数据传输需要两个过程:数据发送和数据确 认.Web服务器向浏览器发送数据包,浏览器返回确认包. 如果把它丢弃,就会导致服务器向浏览器重发此数据包,实 际上增加了服务器的负担.大部分的HTTP请求只含有URL 和其它一些信息,内容较少,只包含在一个数据包中. Web服务器向浏览器发送HTTP数据,要发送较多数据 包.浏览器在收到数据包后,都会回送一个确认包.因此在 正常情况下,硬件驱动必然要处理大量的TCP确认包(ACK), 部分HTTP请求包和少量连接请求包(SYN).如果不加选择 地丢弃,被丢弃的大多数将是确认包,反而加重了服务器 负载. 控制信息对于TCP是非常重要的,在系统过载时,可以 丢弃一部分HTTP请求包和连接请求包;对带有控制信息的 包——FIN,ACK,RST,URG和PSH,则要防止由于sk,buf 收包队列溢出而丢弃. 本文把含有FIN,ACK,RST,URG和PSH标志的包称 为控制包.把含有HTTP请求的普通数据包称之为负荷包, 而只含有SYN标志的包称之为SYN包. 根据以上规则,设计出控制流程,如图2所示.首先判 断系统是否过载,如果不过载,就按照原来的流程处理,否 则就要经过接入控制流程. 图2数据包处理藐程 数据包初始判断过程把网卡所接收到的数据包分为4 类:SYN包,控制包,负荷包和其它包.其它包是与Web 应用进程无关的数据包,如ARP包,Ping包等.IP包头的 协议字段和TCP包头的标志位在数据包中的位置是固定的, 判定过程根据位置直接分析出TCP包头的标志.从IP头部 开始的第72bit位开始的8bit代表了协议类型.首先判断是 否是其它包,IP包头中的协议类型不是TCP或TCP包头的 目标端口不是Web应用进程所接收的端口就属于其它包.其 它包按照原来的流程处理. 如果不是其它包,就是发向Web服务器进程的数据包. IP头部是20B,从TCP头部开始的第110bit判定SYN包. 当所有的标志位都为"0"时,被判定为负荷包;当只有SYN=I 时,被判定为SYN包,否则被认为是控制包. 2.3过载爿断 判断系统过载需要考虑多种因素,综合CPU,内存,网 络连接数等信息判定系统负载程度,然而采用这些会让处理 变得复杂. sk—buf收包队列长度是非常重要的度量,实际反映服务 器负载状态.无论服务器的瓶颈在什么地方,最终结果都会 在队列长度上表现出来,而且LinuxKernel2.4.x内核也根据 队列长度设定5个拥塞级别. 在过载情况下,要丢弃部分负荷包和SYN包.HTTP请 求具有一定突发性,服务器常常处于瞬间过载之中,如果只 一 】15— 是采用服务器的实时负载作为判断过载的标准,就会使系统 处于不稳定状态.为了减少HTTP请求突发的影响,要考虑 一 段时间内的平均负载.在实现时,本文实现采用了Linux 内核的过载判断方法. 2.4丢包方式 在过载情况下,要丢弃负荷包和SYN包,有多种方式可 供选择,一般可以采用下面的丢弃方式. (1)过载丢弃 当系统负载超过某一定值,丢弃所有的SYN请求包和 负荷包.这种方法非常简单直接,然而会给客户一种系统不 稳定的感觉.假设在过载情况下拒绝所有的负荷包和SYN 包,很快造成系统空闲.采用这种方式会使服务器负载产生 摇摆,在空闲和过载之间来回摆动. (2)早期随机丢弃(RED) 当系统负载超过某一定值,随机丢弃部分SYN请求包 和负荷包.包被丢弃的概率与负载成正比变化.它的好处在 于能缓解或避免系统过载,系统负载变化比较平滑,不会出 现大起大落现象. (3)带权值的早期随机丢弃 一 些客户需要特别的服务保证,如远程管理.然而从数 据包中提取客户信息,查寻和比较等操作使硬件中断处理过 程变得复杂. 2.5Linux实现 本文修改了Linuxkernel2.4.x中的rtl8139too网卡驱动, 在rtl8139一rx—interrupt()函数开头增加了上述过程.sk_buf收 包队列长度被作为负载大小判断的标准.本文采用了早期随 机丢弃策略.在处于拥塞状态时,每间隔一定数量的数据包, 就自动丢弃一个.随着拥塞级别增加,相应增加丢弃比例. 3实验 实验结果本方法是有效的,能够大大减少过载对服 务器的影响. 实验软硬件环境如下所述:Web服务器硬件配置为CPU 是PII350,128MB内存,2块100Mb网卡;软件环境:运 行RedHat9.0操作系统,使用了Linux2.4.22内核,Web服 务器是Apache2.2.2台硬件配置为CPU是PIV,100Mb以 太网卡,512MB内存的PC运行sclient作为客户机.它们通 过交叉线直接与Web服务器主机相连. 在实验中,本文分别使用了HTTP/1.0和HTT~I.1两种 标准.HTTP/1.0使用非持久连接,每次服务器发送一个对象 后,相应的TCP连接就被关闭,即每个连接都没有持续到可 用于传送其他对象.HTTP/1.1的默认模式是使用带流水线的 持久连接,浏览器可以持续发出引用对象的请求. 图3中的纵坐标是服务器向浏览器的吞吐量,横坐标是 每秒钟所发出的请求数.从2个图看出,当请求数迅速增加 时,没有修改的驱动,其服务能力也迅速下降.采用修改后 的驱动,其服务能力虽然有一些下降,但幅度小很多.Web 服务器的最高处理能力大约是1000次/s请求.在每秒钟请 求数达到3000次以上时,Web服务器的能力还能保持,基 本没有下降,当然其中有很大部分请求并不能得到服务.随 着请求数增加,没有修改过的Web服务器,其服务能力迅速 下降.使用HTTW1.0,在10000次/s时,服务能力下降到 10Mbps;使用HTTP/1.1,在12000次/s时,服务能力也下 降到近10Mbps.相反修改过的服务器,其服务能力还是保持 在一个较高的水平. 羔 咖 崮 每秒所发出的请求数,次 — _e—Originaldriver—1Modifieddriver (a)使用HTT1.0标准 每秒所发出的请求数,次 — _e—Originaldriver—E}_.Modifieddriver (b)使用H1Tr1.1标准 圈3甩sclient测试晨务器性能结果 4结论 Web服务器所能接收的HTTP请求数有固定峰值,超过 就会降低Web服务器的服务能力.因此有必要采用接入控制 来消除请求数过多所带来的影响. 不同类型的TCP包对服务器负载的影响是不相同的. SYN包意味着要与Web服务器进程建立新连接,占用内存, CPU时间等资源,并带来新的HTTP请求,随后给服务器带 来很大的压力.普通的负荷包含有HTTP请求,要求服务器 进程传送一个对象,也会新增加压力.ACK包是浏览器的确 认包,如果TCP层收不到,就会重发对应数据包,所以接收 ACK包实际上是减少服务器压力.本文根据以上内容,设计 并实现了对网络数据包的接入控制,通过实验证明有很好的 效果. 参考文献 lVoigtGunningbergEAdaptiveResource—basedWebServer AdmissionControl[C]//Proc.ofISCC'O2.2oo2. 2VoigtTewariR,FreimuthD,eta1.KernelMechanismsforService DifferentiationinOverloadedWebServers[C]//Proc.ofUsenix AnnualTechnicalConference.2ool一06. 3MogulJC,RamakrishnanKK.EliminatingReceiveLivelockinan Interrupt—drivenKernel[J].ACMTransactionsonComputerSystem, 1997,l5(3):2l7-252. 4CrovellaME.BestavrosA.Self-similarityinWorldWideWebTla衔c: EvidenceandPossibleCauses[J].IEEE,ACMTransactionson Networking,1997,5(6):835—846. 5CherkasovaL.PhaalP.SessionBasedAdmissionControl:A MechanismforImprovingthePerformanceofanOverloadedWeb Server[R].HPLab,TechnicalReport:HPL一98一l19,1998. 6姚念民,鞠九滨.过载服务器的性能研究【J1.软件,2003, l4f1O1.
/
本文档为【过载服务器的接入控制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索