web服务:Nginx和Apache的区别

web服务:Nginx和Apache的区别一、Nginx特点1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。  2、抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下nginx能保持低资源低消耗高性能,而apache在PHP处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。  …

大家好,又见面了,我是你们的朋友全栈君。

一、Nginx特点

1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。

  2、抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下nginx能保持低资源低消耗高性能,而apache在PHP处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。 

  3、nginx在开启时,会生成一个master进程,然后,master进程会fork多个worker子进程,最后每个用户的请求由worker的子线程处理。 

  4、可以配置nginx的upstream实现nginx的反向代理。 

  5、nginx作为负载均衡服务器,支持7层负载均衡。 

  6、nginx处理静态文件好,静态处理性能比apache高三倍以上。

  7、支持高并发连接,每秒最多的并发连接请求理论可以达到50000个。 

  8、nginx配置简洁,正则配置让很多事情变得简单,而且改完配置能使用-t测试配置有没有问题,apache配置复杂,重启的时候发现配置出错了,会很崩溃。 

  9、用线程处理用户请求,而线程是共享内存的,只需要开启少量进程,多个线程就可以共享进程的内存,占用内存小。 

  10、一个进程死掉时,会影响到多个用户的使用,稳定性差

  11、nginx的设计高度模块化,编写模块相对简单。

  12、nginx本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器。

  13、启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级。

  14、社区活跃,各种高性能模块出品迅速。

二、Apache特点 

  1、select同步阻塞。

  2、一个连接对应一个进程。

  3、用进程处理用户请求,用MPM(多处理模块)来绑定到网络端口上,接受请求,调度子进程处理请求。

  4、当用户请求过多时,开启的进程较多,占用内存大,每秒最多的并发连接请求最多不超过3000个。

  5、一个进程死掉时,不会影响其他的用户

  6、apache的rewrite比nginx强大,在rewrite频繁的情况下,用apache。 

  7、apache发展到现在,模块超多,基本想到的都可以找到。 

  8、apache更为成熟,少bug,nginx的bug相对较多。 

  9、apache超稳定。 

  10、apache对PHP支持比较简单,nginx需要配合其他后端用。 

  11、apache在处理动态请求有优势,一般动态请求要apache去做,nginx适合静态和反向

  12、apache仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区。

  两者最核心的区别在于apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。一般来说,需要性能的web服务,用nginx。如果不需要性能只求稳定,更考虑apache,apache的各种功能模块实现比nginx好,例如ssl的模块就比nginx好,可配置项多。epoll(freebsd上是kqueue)网络IO模型是nginx处理性能高的根本理由,但并不是所有的情况下都是epoll大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache的select模型或许比epoll更高性能。当然,这只是根据网络IO模型的原理作的一个假设,真正的应用还是需要实测。更为通用的方案是,前端nginx抗并发,后端apache集群,配合起来会更好

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137499.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • OHEM代码梳理[通俗易懂]

    OHEM代码梳理[通俗易懂]传送门:相关OHEM的介绍:检测模型改进—OHEM与Focal-Loss算法总结代码地址:OHEM1.前言有关OHEM的介绍请参考上面给出的链接,这里主要就OHEM是怎么运行的做一些简单的分析,整个OHEM的代码也不是很多,这里将算法的步骤归纳为:1)计算检测器的损失,这部分是使用和最后fc6、fc7预测头一样的共享参数,预测分类与边界框回归的结果,将预测的结果与GT进行比较得…

    2022年5月30日
    33
  • vsftp 用户_linux虚拟用户

    vsftp 用户_linux虚拟用户Vsftp与PAM虚拟用户使用yum安装vsftpyum install vsftpd pam pam-* db4 db4-* 创建一个保存用户及密码的文件cd /etc/vsftpd/ touch virtual_login 添加用户(一行用户一行是密码)vim  virtual_login dongnan nandong

    2022年9月24日
    3
  • navicat premium 15 激活码 mac(JetBrains全家桶)「建议收藏」

    (navicat premium 15 激活码 mac)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月21日
    150
  • 三极管驱动继电器电路

    三极管驱动继电器电路    继电器线圈需要流过较大的电流(约50mA)才能使继电器吸合,一般的集成电路不能提供这样大的电流,因此必须进行扩流,即驱动。图1所示为用NPN型三极管驱动继电器的电路图,图中阴影部分为继电器电路,继电器线圈作为集电极负载而接到集电极和正电源之间。当输入为0V时,三极管截止,继电器线圈无电流流过,则继电器释放(OFF);相反,当输入为+VCC时,三极管饱和,继电器线圈有相当的电流流过,…

    2022年6月24日
    26
  • Ubuntu18.04.3虚拟机安装步骤(图文教程,非常详细!!!)

    Ubuntu18.04.3虚拟机安装步骤(图文教程,非常详细!!!)原创:丶无殇2019-9-6虚拟机的安装步骤就不教学了!自行百度!接下来教学ubuntu18.04.3desktop_amd64版本的安装和配置教程软件下载地址详细介绍:http://bencky.ml/linux下载速度很快:25MB/s左右一、ubuntu安装教…

    2022年4月6日
    132
  • Thymeleaf contextPath(无废话)[通俗易懂]

    Thymeleaf contextPath(无废话)[通俗易懂]一、引入js、css文件<scripttype="text/javascript"th:src="@{/static/js/jquery-1.12.1.min.js}"></script>二、在body中发出请求<li><ath:href="@{/admin/show}">发送请求</a>

    2022年9月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号