`
pengpeng
  • 浏览: 84094 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

探讨event based vs thread based的性能,以及apache 的MPM

阅读更多

    上一篇介绍了所有的I/O模型,这篇介绍一下现在流行的web server是如何利用I/O模型达到高并发,高性能的服务器的。

0 . 知识回顾

     从前几篇介绍,我们知道操作系统内核给我们提供了好几种I/O模型,这样我们的应用程序不用阻塞在read/write这些系统调用,而是阻塞在select/poll/epoll.当然这些系统调用帮我们检测大量的fd是否就绪,并提供非阻塞调用模式。

     由于AIO模型linux 2.6内核才支持,还没有大量流行起来。 所以包括jdk 1.6 ,以及一些流行的web服务器apache,lighttpd,jetty,都是利用的是epoll模型,来设计高并发服务器。

1.  了解event based 和 thread based模型

    thread based: 一个客户请求来了,web server从worker线程池分配一个线程去处理。就是说一个sockefd由一个thread去处理。

    event based: 一个线程统一去处理所有的连接(socket);等到socket就绪了才分配一个worker线程池里的线程去处理。利用系统调用epoll I/O复用模型,当socket读就绪了才去调度worker线程去处理。这样对比thread based来说,某一时刻,worker线程池有大量idle线程等待着。而对于thread based模型来说,worker线程池可能已经被用完了。

 

  现在流行的高并发,高性能webserver ,采用event based 的有:lighttpd,zeus等。

2 . 为什么event based 比thread based模型能应对高并发

     thread based 缺点: 操作系统能支持的线程数有限; 占用内存高; 线程上下文切换频繁,性能下降; 很脆弱,大量的半tcp攻击就会用完资源,导致无法相应用户请求。

3. apache的MPM

 apache 支持三种MPM : Prefork, worker, event;

 prefork: 基于thread based 模型。per process per client的模式,一个连接一个子进程来处理的模式。是apache 1.3这个版本开始的。比较老了;基本没人用了吧。

 worker: 基于thread based 模型。进程和线程混合模式, 利用per thread per client 的模式,一个连接一个线程去处理,比起prefork模式来说,更加轻量级,支持更多的并发量。

 event:   基于event based 模型。worker MPM之上,但是利用event based模型,有一个单独的线程去监听和处理已连接套接字(当然是利用epoll);比起worker来说,支持更多的并发量,而且占用的内存空间跟少。

参考资料:

 http://www.kegel.com/c10k.html

 http://pl.atyp.us/content/tech/servers.html

 http://httpd.apache.org/docs/2.2/mod/event.html

分享到:
评论

相关推荐

    Apache Prefork、Worker和Event三种MPM详解

    Apache 提供的 Prefork、Worker 和 Event 三种 MPM 分别适用于不同场景下的性能需求。通过仔细配置这些 MPM 的参数,可以显著提高 Web 服务器的性能和可靠性。选择合适的 MPM 并进行合理的配置调整是优化 Apache ...

    Apache 集群性能优化 日志切分

    日志切分则是管理和分析服务器日志的一种有效方法,有助于监控系统状态、追踪问题以及进行性能调优。以下是对这两个主题的详细说明: 一、Apache集群性能优化 1. **配置MPM模块**: Apache HTTP Server提供了多种...

    apache性能优化

    通过以上对Apache性能优化的知识点详细介绍,我们可以看出Apache通过其灵活的配置选项和不同的MPM模式为用户提供了一种高效稳定的服务方案。正确选择并配置适合自身需求的MPM模式对于提升Apache服务器的性能至关重要...

    LAMP系统性能调优(apache+php+mysql)参考.pdf

    综上所述,LAMP系统性能调优是一个涉及多个层面的复杂过程,包括选择合适的Apache MPM、调整Apache和PHP的配置、优化代码以及合理使用缓存等。通过这些手段,可以显著提高LAMP系统的响应速度和处理能力,从而提供更...

    Apache性能优化

    Apache性能优化是一个复杂而关键的任务,它涉及到服务器的配置、硬件资源的利用以及软件设置等多个层面。Apache作为一款广泛应用的Web服务器,其性能优化能够显著提升网站的响应速度和用户体验,尤其是在高并发环境...

    25个Apache性能优化技巧推荐

    ### Apache性能优化技巧详解 #### 一、简介 在当今高度依赖互联网的世界中,Web服务器的性能至关重要。Apache作为全球最流行的Web服务器之一,其性能直接影响到网站的响应速度及用户体验。本文将详细介绍25个实用...

    apache2.4.35,apache2.4.23

    3. **MPM(多进程模块)改进**:包括`event MPM`和`worker MPM`,前者在保持低延迟的同时处理大量连接,后者则兼顾多线程和多进程的优势,适用于不同类型的负载。 4. **配置指令优化**:2.4版本对配置指令进行了...

    Windows下64位Apache-2.4.6

    Apache 2.4引入了许多性能改进和优化选项,例如MPM(多进程模块)选择,可以根据服务器负载和硬件资源调整。例如,对于单CPU系统,Prefork MPM可能是个好选择,而对于多核系统,Worker或Event MPM可能会更合适。 9...

    Apache2.2安全配置和性能优化

    ### Apache2.2安全配置和性能优化 #### 安全配置 **Apache禁止目录遍历:** 为了确保Apache服务器的安全性,防止恶意用户通过遍历目录来获取未授权的文件或者敏感信息,需要对Apache进行相应的配置。在Apache中,...

    apache2.4.9 for windows

    4. 更好的事件模型:Apache 2.4引入了新的MPM(多进程模块)——Event MPM,它结合了预连接和多线程的优点,提高了并发性能。 5. 更佳的日志记录:支持自定义日志格式,以及更灵活的日志分割和处理策略。 6. 身份...

    最新版apache安装包

    2. **Event MPM(多进程模型)优化**:Apache 2.4中的Event MPM改进了并发处理能力,减少了对系统资源的需求,提高了高并发场景下的性能。 3. **HTTP/2支持**:Apache 2.4开始支持HTTP/2协议,这是一个二进制分帧的...

    LAMP系统性能调优(apache+php+mysql).pdf

    首先,Apache的性能优化主要涉及其多处理模块(MPM)的选择和配置。Apache的MPM决定了其处理网络请求的方式。传统的Prefork MPM使用一个进程处理一个请求,适合于非线程安全的环境,而Worker MPM使用多进程和多线程...

    麦克 MPM180/MPM185 TO-8封装压阻式压力敏感元件.pdf

    麦克MPM180/MPM185系列TO-8封装压阻式压力敏感元件,是压电压力传感器的一种,主要特点在于它们能够实现压力到电压的线性转换,并具有良好的温度补偿性能。该系列传感器广泛应用于医疗、航空航天和通讯等多个领域,...

    apache 2.4.9

    2. **事件模型**:此版本引入了新的事件处理模型(MPM_event),该模型优化了高并发场景下的性能,通过更有效地利用系统资源来处理更多连接。 3. **配置改进**:Apache 2.4的配置语法有所变化,使用了更多的指令集...

    mysql performance monitor mpm下载

    MySQL性能监控工具MySQL Performance Monitor(MPM)是一个用于优化数据库性能的重要工具,它可以帮助管理员实时监控MySQL服务器的状态,提供详细的性能指标,以便更好地理解和调整数据库的运行情况。MPM的下载通常...

    apache2.4 X64版本

    7. **性能优化**:Apache 2.4进行了许多性能优化,如更快的内存分配,减少内存碎片,以及更好的并发处理能力。这些优化有助于在保持高并发连接的同时降低系统资源消耗。 8. **日志管理**:Apache 2.4的日志记录功能...

    MPM3808_mpm3808程序驱动_

    对于MPM3808来说,驱动程序主要功能包括初始化传感器、配置工作模式、读取数据以及处理异常等。 1. 初始化传感器:在驱动程序开始时,需要对MPM3808进行初始化,设置其工作模式和配置参数。这可能涉及设置I2C地址、...

    apache中文帮助文档

    6. **多线程与MPM(多进程模块)**:了解Apache的MPM机制,如prefork、worker和event模型,以及如何根据服务器需求选择合适的MPM。 7. **虚拟主机**:设置和管理基于域名、IP或端口的多个虚拟主机,允许在一个...

Global site tag (gtag.js) - Google Analytics