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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql datetime格式化日期(sql 日期格式)

    mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的含义,现提供mysql格式换时间函数,可以方便的看到格式化后的时间。1.DATE_FORMAT()函数用于以不同的格式显示日期/时间数据。DATE_FORMAT(date,format)format参数的格式有%a缩写星期名%b缩写月名%c月,数值%D带有英文前缀的月中的天%d月的天,数值(00-31)%e月的天,数…

    2022年4月15日
    132
  • Maven打包时引入本地jar包

    Maven打包时引入本地jar包背景开发的时用到的jar包可能在私服中找不到,需在下载到本地,然后在编译器Eclipse或者IDEA中引入本地jar包,这样在本地开发是OK的,但是linux服务器通过Maven打包的时候会提示异常找不到对应的类。这是需要在我们的pom.xml文件添加点配置了。落地开发支付宝沙箱支付时,需要引入本地jar包,我把jar存放的项目中的/src/main/resources/lib下1.打…

    2022年5月27日
    122
  • Spring中ApplicationContext对Beanfactory扩展[通俗易懂]

    Spring中ApplicationContext对Beanfactory扩展[通俗易懂]ApplicationContext比BeanFactory扩展了高级特性,除了集成了ListableBeanFactory和HierarchicalBeanFactory以外,实现了如下附加功能:

    2022年6月24日
    30
  • 苹果手机软件开发教程_iOS 开发

    苹果手机软件开发教程_iOS 开发iPhone手机开发平台入门介绍和教程,网上碰到的IPhone手机开发的相关资料,收藏一下,关于在苹果的操作系统开发软件中国人了解的还非常少,中文资料也非常少,以后我就练练英语,也翻译一些吧,哈哈.1.iPhone手机介绍首先需要了解和激活成功教程iPhone手机,下面一个帖子介绍很详细:iPhone最权威[入门][激活成功教程][扫盲][资源][修砖]总汇帖http://www.weiphone.

    2022年8月12日
    5
  • Navicat Premium 15generate生成激活码失败_通用破解码

    Navicat Premium 15generate生成激活码失败_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    117
  • 主流大数据平台及解决方案对比「建议收藏」

    主流大数据平台及解决方案对比「建议收藏」这几天自己根据网上的资料学习整理的,比较粗浅,权当个人学习总结

    2022年5月5日
    48

发表回复

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

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