- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10服务器并发性的统一、高效管理剖析
* * * * * * * * * * * * * * * * * * * * * * * * * * 《计算机通信与网络编程》 第十讲 服务器并发性的统一、高效管理 电子科技大学计算机学院 服务器并发性的统一、高效管理 目的: 设计更灵活、性能更优化的并发服务器。 2. 困难: 设计所依赖的条件在不断变化,而我们只能依 靠经验来做出判断。 并发等级 定义:服务器整个生命期中,同时并发的最大线程数量。该参数某种意义上代表了该服务器的最大资源开销。 我们可以限制服务器的最大并发数量,也可以不限制(允许创建任意多的线程),此时该服务器的并发等级受限于操作系统的限制。 需求驱动的并发 当收到远程连接请求时触发线程创建,此时服务器的并发等级依赖于客户的需求。(同时存在的连接越多,并发等级越高) 并发的代价 需求驱动虽然能够提供动态的灵活性并提供较小的时延,但是并不一定是最优化的。因为并发是有代价的。 额外开销和时延 在需求驱动模式下,任一时刻的并发等级反映了当时服务器已收到但还没有处理完毕的请求数目。 线程的创建是有开销的。而该开销相对来说是昂贵的。(进程创建和进程切换都是有开销的) 这个开销一方面会带来处理的时延,另一方面会消耗系统资源。 小时延可能出麻烦 当创建线程的开销大于处理单个连接请求的开销时,会出现新的问题。 假设创建线程的时间开销为c、处理请求的时间开销为p。 并发式 循环式 0 C 2c 2c+p 创建从进程 1 创建从进程 2 处理请求 1 处理请求 2 处理请求 1 处理请求 2 0 P 2p 小时延可能出麻烦 从上图可以看出,当pc时,并发方式处理单个请求的时间开销为p+c,处理两个请求的时间开销为2c+p,平均处理单个请求的时间为3c/2+p。 循环方式下处理单个请求的时间为p处理,2个请求的时间为2p,平均处理单个请求的时间为3p/2。 小时延可能出麻烦 在上面的例子里,循环服务器反而能够提供更快的响应速度和更高的处理效率。 当若干个请求几乎同时到达时,服务器只能对其中一个请求进行处理,其余的请求只能在TCP协议队列中排队等待。 如果服务器处理的速率要慢于新请求到达的速率的话,等待队列将不断增大,直至充满,此时我们所最不希望出现的事件发生了, 连接被拒绝! 小时延可能出麻烦 在上面的例子中,如果请求到达的速率超过1/c时,并发服务器最终将会拒绝连接,超过1/p时循环服务器将拒绝连接。但速率1/c而小于1/p时,并发设计出现问题而循环方式仍然正常运行。 从上面的分析中我们得出的结论是: 重负荷的服务器要提供最佳响应的话,必须考虑按需并发的替代方案。 从进程/进程预分配 p取决于服务所执行的功能操作和cpu的处理能力,对p的减少是非常有限的,同时当n-∞时p/n-0。c是系统创建线程的开销,从某种程度上讲是定值,无法减少。因此我们的改进应该从减少线程创建的次数着手,使得平均每次请求处理所分摊的线程创建开销随着n的增加而减少。 在服务器开始执行时就创建N个从线程/进程, 将所接受的新的请求分配给这N个从线程/进程中的一个处理,从全局来看,每个从线程/进程只创建一次 从线程/进程预分配 缺点: 对资源的使用必须小心 由于从线程/进程在服务存活期间始终活跃,并不退出,其所分配的内存等资源将不会自动释放,因此在此种设计方案中从线程程序中要特别注意对内存等资源的分配和释放。 面向连接服务器中的预分配 使用互斥我们可以使多个进程同时阻塞在一个socket的accept事件上,当有连接到达时,系统只会唤醒一个从进程。该从进程处理完连接后会继续调用accept等待下一连接到达。 请思考: 这种处理方式在什么情况下带来好处,是否能解决所有可能的问题? 面向连接服务器中的预分配 互斥、文件锁定和accept并发调用 有些操作系统并不能自动为多个进程同时accept同一个socket提供支持,或者能支持同时accept但是却在
文档评论(0)