• nginx和apache作为webserver的差别


    1.两者所用的驱动模式不同。

    nginx使用的是epoll的非堵塞模式事件驱动。

    apache使用的是select的堵塞模式事件驱动。

    2.fastcgi和cgi的差别

    当用户请求web服务的时候。web会依据不同的需求将请求发送给不同个cgi来处理。

    cgi模式,就是每次有请求的时候都fork一个新的进程来处理这个请求。处理完毕后再关闭这个进程。

    fastcgi模式。就是在server启动的时候依据配置文件建立几个cgi接口进程长驻在内存其中,当有请求连接的时候,cgi被激活来处理请求连接。处理完成后cgi进程也不会关闭。会再次等待下次的请求连接。

    由于进程的创建和关闭须要占用非常大的内存和cpu资源。所以,相比較而言。处理多请求的情况下fastcgi模式的长处会不言而喻。

    3.两者的支持模块

    Apache支持的模块非常多。并且也比較稳定。而nginx因为出现的比較晚,所以在这方面可能比不上Apache。

    nginx本身就是一个反向代理server,并且支持7层负载均衡。

    Apache的rewrit功能比nginx强大很多。

    nginx是多线程的,而Apache是多进程的。

    nginx是异步堵塞,而Apache是堵塞

    nginx处理动态页面非常鸡肋,一般仅仅用与处理静态页面和反向代理。

    Apache因为支持的模块比較多。能够支持比較多的动态页面。并且性能比較稳定。

    假设须要性能。就使用nginx。假设须要稳定。就使用Apache。


    3.1.1 堵塞和非堵塞:

    堵塞和非堵塞指的是运行一个操作是等操作结束再返回,还是立即返回。

    比方餐馆的服务员为用户点菜,当实用户点完菜后,服务员将菜单给后台厨师,此时有两种方式:

    • 第一种:就在出菜窗体等待,直到厨师炒完菜后将菜送到窗体,然后服务员再将菜送到用户手中。
    • 另外一种:等一会再到窗体来问厨师,某个菜好了没?假设没有先处理其它事情,等会再去问一次;

    第一种就是堵塞方式。另外一种则是非堵塞的。

    3.1.2 同步和异步:

    同步和异步又是另外一个概念。它是事件本身的一个属性。还拿前面点菜为例,服务员直接跟厨师打交道,菜出来没出来,服务员直接指导,但仅仅有当厨师将菜送到服务员手上,这个过程才算正常完毕,这就是同步的事件。

    相同是点菜,有些餐馆有专门的传菜人员。当厨师炒好菜后。传菜员将菜送到传菜窗体,并通知服务员,这就变成异步的了。事实上异步还能够分为两种:带通知的和不带通知的。前面说的那种属于带通知的。

    有些传菜员干活可能主动性不是非常够,不会主动通知你,你就须要时不时的去关注一下状态。这样的就是不带通知的异步。

    对于同步的事件。你仅仅能以堵塞的方式去做。而对于异步的事件。堵塞和非堵塞都是能够的。

    非堵塞又有两种方式:主动查询和被动接收消息。

    被动不意味着一定不好。在这里它恰恰是效率更高的,由于在主动查询里绝大部分的查询是在做无用功。对于带通知的异步事件,两者皆可。

    而对于不带通知的,则仅仅能用主动查询。



  • 相关阅读:
    C#:将空间数据加载到树视图控件
    C# 常见错误
    C#:Application操作(待补充)
    C#:XML操作(简单)
    C#:xml操作(待补充)
    C#:消息框
    C#:数学运算(待补充)
    C#:Ini文件操作(待补充)
    C#:文件操作(待补充)
    2015河南省农村拆迁赔偿流程
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6911364.html
Copyright © 2020-2023  润新知