美文网首页
第3章 Nginx 与 apache的优缺点

第3章 Nginx 与 apache的优缺点

作者: hubery_zhao | 来源:发表于2023-02-20 09:59 被阅读0次

Nginx 与 Apache在市场上都有绝对的领先地位,这两个霸主的区别又是什么呢?

1.1 进程模型

Nginx的经常模型前面已经提到过了,是通过异步、非阻塞、事件驱动的方式实现的。Nginx的工作进程是多进程的,每个worker进程是可以异步处理大量的用户请求,因此高并发nginx能保持低资源低消耗高性能运行。

Apache 一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式, 其中最常用 和 默认的是prefork模式,prefork是一个非线程型的、预派生的MPM , 使用多个进程,每个进程在某个确定时间只单独处理一个链接,效率高,但内存使用量大。 一个进程先对暂用更多的系统资源,消耗更多的内存。 因此 , Apache并不十分擅长处理高并发请求。在这种场景下,它将会请求放进队列中,一直等到有可用的进程,请求才会被处理,因此Apache是阻塞型的,用户请求过多时,开起的进程较多,占用内存大,每秒最多的并发链接请求最多不超过3000个,而nginx则可用并发连接超过5万(官方测试5w ,网上有部分人说可以超过10w)

1.2 配置文件

Nginx 的配置简洁,且支持正则表达式,使用起来非常方便。在启动或者热加载时都会优先检查配置文件是否存在语法错误。

Apache 的配置则略显复杂,而且只有启动时候才知道配置是否存在问题,如果是重启出错则会导致服务中断,进而影响业务

1.3 性能对比

根据前面的进程模型对比,我们可以看出:Nginx 是轻量级、支持高并发、海量请求的 web 服务器,而 Apache 是重量级、不支持高并发的 web 服务器。

Nginx 在处理静态文件方面的性能要远超于 Apache,而且支持压缩、缓存

等配置。 Nginx 最擅长的是静态资源访问和反向代理。其反向代理模块也同时

支持 4 层协议(主要是 TCP 协议/ UDP 协议)和七层协议(HTTP 协议、

WebSocket 协议、WSGI 协议等)的反向代理。同时也可以作为负载均衡服务器,

也支持 4 层和 7 层的负载均衡,这些优势是 Apache 无法比拟的。但是 Apache

在处理动态请求方面有较大优势,比如 rewrite****(对 url 重写)功能。如果网站

使用 rewrite 频繁的情况下,建议用 Apache****。

此外,根据 Nginx 和 Apache 的进程模型,可以看到,Apache 一个进程对

应一个连接请求,而 Nginx 的一个 worker 进程可能对应很多个连接请求,这

样如果 Nginx 的一个进程死掉,会影响比较多的用户请求,所以 Apache 相比

Nginx 会更稳定一些

1.4 部署方面

Nginx 安装和启动都特别容易, 并且几乎可以做到 724* 不间断运行,即使运行数个月也不需要重新启动,支持热部署,实现不间断服务的情况下进行软件版本的升级与版本的回退

Apache 在修改配置后,只能手工重启服务或者使用第三方插件实现热部署,期间服务会出现短暂的不可用。

1.5 社区情况

Apache 出现时间比较早,仍然是主流的 Web 服务器,拥有丰富的特性,成熟的技术和开发社区,还有数不甚数的第三方插件。而 Nginx 作为后起之秀,社区同样非常活跃,版本迭代更新快,各种高性能的第三方模块层出不穷。使用 Apache 和 Nginx 中出现的大部分问题都能在社区和网上找到相应的解决方案

相关文章

网友评论

      本文标题:第3章 Nginx 与 apache的优缺点

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