zoukankan      html  css  js  c++  java
  • Nginx与Apache工作方式


    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://going.blog.51cto.com/7876557/1304204

    NginX工作原理

    Nginx由内核和模块组成,是一个轻量级的web服务器,工作也相对比较简单,通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。

    Nginx的模块从结构上分为核心模块、基础模块和第三方模块, HTTP模块、EVENT模块和MAIL模块等属于核心模块,HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块属于基础模块,而HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块属于第三方模块,用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。

    Nginx工作模式也采用了大多数http服务器做法,分为一个主进程和多个工作进程两种模式。在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;在多工作进程模式下,每个工作进程包含多个线程。Nginx默认为单工作进程模式。

    Nginx的模块直接被编译进Nginx,因此属于静态编译方式。启动Nginx后,Nginx的模块被自动加载,不像Apache,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。在解析配置文件时,Nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。

    Apache工作模式

    Prefork模式:多子进程,默认由控制进程建立5个子进程,每个子进程只有一个线程,等待用户的连接,一个子进程在一定时间内独立地处理一个请求,结束后处理下一个请求,如果负载请求超出了预创建的进程数,就会启动额外的进程,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。

    Worker模式:多子进程、多线程,默认由主控制进程生成2个子进程,每个子进程有多个线程,默认的MaxClient最大是256个线程,各个线程在一定时间内独立地处理一个请求。worker MPM要比prefork MPM内存使用少得多,而系统资源的开销要小于基于进程的服务器,如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。

    总结:默认是prefork模式,可以用http -l查看当前的工作模式,perfork速度方面稍高于worker,内存和cpu使用率也比worker高许多。


  • 相关阅读:
    第二周 历年学生作品评论
    第二周 WBS、NABCD查阅
    第二周 SCRUM站立会议
    第二周 燃尽图
    第二周 对读构建之法后提出的五个问题
    补上一周的进度条
    词频统计
    每周进度及工作量统计——第三周
    第三周 四人小组
    词频统计 效能分析
  • 原文地址:https://www.cnblogs.com/ycpanda/p/3637186.html
Copyright © 2011-2022 走看看