Linux环境并发服务器设计技术研究.pdfVIP

Linux环境并发服务器设计技术研究.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux环境并发服务器设计技术研究

第 21卷第5期 成 邪 信 息 工 程 学 院 学 报 VoI2lN 【】.5 2006 f=:10月 JOURNAIOF(、HEN(il)UUNIVERSITYOE1Nlq)RMA1’ION IECHN()I』)(;Y ()(’t.2006 文章编号:1671一I742(2006)05—063005 Linux环境并发服务器设计技术研究 刘仕筠, 盛志伟, 黄 健 (成都信息工程学院,四川成都 610225) 摘要:讲述许发服务器设计的主要技术,包括多进程服务器、多线程服务器和 1/O复用服务器,同时对以上服 务器技术的性能进行_r简要分析,给出了在Linux操作系统下使用 t实现并发服务器的方法。 关 键 词:并发服务器;多进程 ;多线程;1/O复用 中图分类号:TP316.81 文献标识码:A 引言 网络服务器是网络软件的核 、部分,Linux由于其源码开放,性能稳定,所以在服务器市场中占有的份额越 来越多,许多经典的服务器(如WEB服务器)都使用 Linux系统。随着网络应用的不断增多,服务器的服务类型 也不断增多,而且性能要求越来越高,开发高性能的网络服务器是大势所趋。服务器设计技术有很多,按使用的 协议来分有TCP服务器和UDP服务器。按处理方式来分有迭代服务器和并发服务器。一个好的服务器,一般 都是并发服务器。并发服务器设计技术一般有:多进程服务器、多线程服务器、I/O复用服务器等。下面,给出了 这 3种并发服务器的设计与实现。 1 多进程并发服务器 在Linux环境下多进程的应用很多,其中最主要的就是网络 /客户服务器。但是在电信、金融等数据量和稳 定性要求都比较高的环境中,也会涉及到多进程的应用。多进程服务器是当客户有请求时,服务器用一个子进程 来处理客户请求。父进程继续等待其它客户的请求。这种方法的优点是当客户有请求时,服务器能及时处理客 户,特别是在客户服务器交互系统中。对于一个TCP服务器,客户与服务器的连接可能并不马上关闭,可能会等 到客户提交某些数据后再关闭,这段时间服务器端的进程会阻塞,所以这时操作系统可能凋度其它客户服务进 程。比起迭代服务器大大提高了服务性能。 1.1 多进程服务器传统方法 多进程服务器设计方法也很多,传统方法是父进程进行监听(TCP服务器),当有连接到达时,生成一个子进 程处理客户请求,之后父进程继续监听。所以有时把父进程称为监听进程。其模板如下: intmain(void) {listen(1istenfd,BACKLOG); /*listenfd是监听套接字*/ while(1){ if ((connfd=accept(~,ckfd,NULL,NULI))== 一1) { /*错误处理 */ } if((pid= fork())0){ close(connfd); /*父进程关闭客户连接套接字 */ 收稿Et期:2006—02.21 第5期 刘仕筠等:Linux环境并发服务器设计技术研究 63l i elseif(pid==0) { close(1istenfd); /*子进程关闭监听套接字 */ … … /*处理客户请求*/ close(connfd); exit(0); } 程序需特别注意的地方是父进程要关闭连接套接字,子进程要关闭监听套接字。因为fork以后,子进程是 父进程的一个复制品,它们都有监听套接字和连接套接字 如果父进程不关闭连接套接字,当子进程关闭连接套 接字时,这个套接字并不会关闭,因为每个套接字描述符郁有一个 “引用计数”。当fork函数返回后 ,listefd和 connfd的引用计数变为2,而系统只有在描述符的 “引用计数”为0时,才真正关闭该描述符。子程序退出后,还 有一些状态信息留给父进程,父进程应调用waitpid函数滴埋子进程,因为子进程终止后,它变为一个僵尸进程, 父进程如果不清理僵尸进程,随着客户终止数 目的增多,僭尸进程越来越多,将耗掉系统资源。清理僵尸进程的 一 般方法是:让父进程收到SIGCHLD号

文档评论(0)

wannian118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档