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高许多。


  • 相关阅读:
    80.常用的返回QuerySet对象的方法使用详解:order_by
    79.常用的返回QuerySet对象的方法使用详解: filter, exclude,annotate
    78.objects对象所属类原理分析
    69.ORM查询条件:isnull和regex的使用
    北邮 自考 互联网及其应用 考核指导
    北邮 自考 Java语言程序设计(一) 考核指导
    计算机网络自考群
    电气工程及自动化 (独立本科) 自考
    清华大学 研究生 培养方案
    windows10 M557 连接 匹配
  • 原文地址:https://www.cnblogs.com/ycpanda/p/3637186.html
Copyright © 2011-2022 走看看