美文网首页网络编程
apache和nginx的区别

apache和nginx的区别

作者: 超鸽带你飞 | 来源:发表于2019-02-28 11:19 被阅读0次

    工作模式:

    apache 有3种模式perfork,worker,event模式 (多进程处理)

    • perfork: 每个子进程只有一个线程

    进程相对占用资源,消耗大量内存,不擅长处理高并发的场景


    image.png
    • worker:多进程和多线程的混合模式

    在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些,在使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等待到超时才会被释放,资源浪费


    image.png
    • event

    解决了keep-alive长连接的时候占用线程资源被浪费的问题,增强了在高并发场景下的请求处理。在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。


    image.png

    查看我们的Apache的工作模式呢?

    httpd -V

    configure配置编译参数的时候,可以使用 --with-mpm=prefork|worker|event来指定编译为那一种MPM,当然也可以用编译为三种都支持:--enable-mpms-shared=all,这样在编译的时候会在modules目录下自动编译出三个MPM文件的so,然后通过修改httpd.conf配置文件更改MPM

    nginx的select和poll和epoll:(多进程)

    • select:轮询 :最大连接数1024
    • poll:没有最大连接数的限制,原因是它是基于链表来存储的
    • epoll:模式单线程异步非阻塞。

    工作原理


    image.png

    Nginx如何实现高并发:

    异步非阻塞的事件处理,比如 epoll
    对于Nginx来讲,一个进程只有一个主线程,通过异步非阻塞的事件处理机制,实现了循环处理多个准备好的事件,从而实现轻量级和高并发。

    相关文章

      网友评论

        本文标题:apache和nginx的区别

        本文链接:https://www.haomeiwen.com/subject/yafhuqtx.html