现在大部分出名的网站都采用的是nginx服务器。nginx服务器性能得到了全球的认可。那么为什么nginx的性能会如此只好呢?本文将通过普通的现实例子来给大家讲明白nginx性能好的原因。
反向代理的主要作用是分发请求。
首先我们要了解系统的性能瓶颈在哪里,一般来说网络io速度和内存io接近,都远高于磁盘io。假定一个接口请求返回数据100k(一般没有这么大,只是假定一个方便计算的值),10个并发请求就是1M,那么全双工千兆网卡(现在还有万兆网卡,但成本太高,应用还不广),可以支撑并发10000个请求,开双网卡,理论的上限就是20000个并发请求。
假设我们收到请求马上就返回,那么最高并发数就是我们上面计算的结果,但是,问题在于,应用服务器做不到马上返回,因为它有很多业务逻辑需要执行处理,比如给用户发推送发短信发邮件,本地磁盘写日志,请求数据库增删改查,调用微信的登录接口等等等等,都附加了各个层面的io。
所以第一层的优化,我们会尽量优化应用服务自身,把发推送发短信发邮件的活推到队列,让别的服务器去干。这个一般用内存队列,io很高。
开多线程或者协程的方式异步写日志,但再怎么优化,磁盘io的上限突破不了,这个io很低。还有更激进的方案,干脆日志也写内存,或者通过内网网络同步到别的服务器上,可以更优化。
数据库复用连接池,减少连接和断开的时间开销。查询语句尽量优化,减少等待数据库操作的时间。当然,再怎么优化,一样有个上限。
调用微信的登录接口等外部接口,这个就更难办了,受制于人,除了tcp连接池复用能稍微优化一点点,完全是取决于外部条件。
木桶理论取最短板,所有这些条件里,总有最慢最落后的那个。假如拖后腿的这个,最佳状态也只能优化到支持2000个并发,那就尴尬了,本来能支持20000个请求的系统,只能用到1/10性能。
( 当然也可以在dns对应不同ip方式分布请求,但是dns层面的分布更复杂更麻烦,因为dns缓存的原因,请求也不能均匀分布,而且ip地址也是越来越稀缺的资源,没有背景没有后台的,搞这么多ip也不容易啊 )
单个公网ip算一个节点的话,这个节点本来的潜力是响应20000个并发请求,实际在应用层面只能到2000并发,潜力还未发掘啊。这个时候,就是反向代理起到用武之地的时候了。
首先一个反向代理的服务器抛开所有业务层的东西,只单纯的接下请求再返回,那么可以支持到20000并发了。接下来应用层面谁来处理?找来10个小弟,转发给他们,每人2000正好。这样这个节点系统虽然性价比只有10/11,但是性能潜力好歹挖尽了。
这就是反向代理的作用了。
打个比方来说:
把服务器想象成饭店,没有Nginx的情况,就如同每一个厨师服务一桌顾客,从点菜开始到炒菜到上菜到收银,有n个厨师就只能服务n桌顾客。有了Nginx的话,Nginx就成了强大的服务员,把招呼,点菜、上菜和收银的活都做了,厨师只需要专心炒菜就行。这样饭店的效率就大大提高了。
技术一点的话:
请求如果直接发到同步处理的后端,那么从收到请求到把响应发出去这段时间,一个进程的资源就被占用了(比如Apache的prefork模式)。在慢连接的情况下,这个进程除了处理之外的大多数时间基本上都耗费在了无意义的等待上。Nginx在这方面的优势就在于它的异步非阻塞模型。这意味着Nginx可以通过基于事件的方式同时处理和维护多个请求,而后端就只需要去做逻辑计算,节约了等待时间去处理更多的请求。
反向代理提高网站性能主要通过三个方面:
- 反向代理可以理解为7层应用层的负载均衡,使用负载均衡之后可以非常便捷的横向扩展服务器集群,实现集群整体并发能力、抗压能力的提高。
- 通常反向代理服务器会带有本地Cache功能,通过静态资源的Cache,有效的减少后端服务器所承载的压力,从而提高性能
- http压缩,开启压缩后,网络流量传输减小,相同带宽下可以服务更多用户
最后还有一个TCP链接复用,不过说实话,如果不是商用的负载均衡器,一般没这个功能。
其实,反向代理还可以有效的隐藏隔离内部服务器,提高了安全性,这也算是提高性能的一个方面吧
并发处理方面apache还是没有 nginx擅长。
b
相关推荐
8. 配置文件:Nginx的配置非常灵活,可以通过配置文件来定义虚拟主机、服务器块、反向代理设置、负载均衡规则等。 文档中提到的CentOS 6.2,是一种广泛使用的Linux发行版,适合服务器环境。而在文档中所提到的nginx...
Nginx 是一个功能强大且广泛使用的 Web 服务器软件,可以作为反向代理服务器、负载均衡器、媒体流服务器和邮件代理服务器等。下面是 Nginx 的一些重要知识点: 为什么选择 Nginx Nginx 的优点在于它的高性能、低...
Nginx 可以作为静态文件服务器,也可以通过反向代理、负载均衡等特性支持动态内容的处理。它采用事件驱动的异步非阻塞模型,能够高效地处理大量并发连接,是搭建高性能网站的重要工具。 **Linux 安装 Nginx** 在 ...
Nginx 是一款高性能、轻量级的Web服务器/反向代理服务器,广泛应用于互联网服务,以其高效的性能、低内存占用和强大的负载均衡能力而闻名。以下是对Nginx配置进行学习时需要了解的关键知识点: 1. **基本架构** ...
Nginx除了作为HTTP服务器外,还支持反向代理功能和灵活的负载均衡策略,可以作为邮件服务器(SMTP、POP3)的反向代理服务器,提供缓存功能,同时还能进行URL重写、文件压缩等功能,大幅度提高了Web服务器的性能和...
3. 反向代理,负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 Nginx 做反向代理 4. 安全管理:可以使用 Nginx 搭建 API 接口网关,对每个接口服务进行拦截...
1. **反向代理**:Nginx作为前端服务器,转发请求到后端多个应用服务器,实现负载均衡。 2. **负载均衡**:轮询、最少连接、IP哈希等多种策略,提高系统的可用性和响应速度。 3. **静态资源处理**:高效地服务静态...
8. 如何在Nginx上实现负载均衡? 9. Nginx可以处理哪些类型的请求? 10. 如何在Nginx上配置反向代理? 11. Nginx有哪些模块? 12. 如何在Nginx配置文件中实现重定向? 13. Nginx可以用作缓存服务器吗?如果可以,...
nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache ...抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单
Nginx是一款高性能、反向代理、负载均衡的Web服务器,因其事件驱动的异步非阻塞模型而备受赞誉。其主要特点包括高并发处理能力、低内存占用和出色的稳定性。Nginx在互联网行业中广泛应用,常用于网站前端作为静态...
3. 负载均衡:Nginx作为一个反向代理和负载均衡器,文档中将会介绍高性能的负载均衡技术。这包括均衡方法如轮询、加权轮询、最少连接、基于IP的哈希等。连接限制的相关内容也可能会被提及,如限制连接数和速率限制等...
其次,`nginx`是一款高性能的Web服务器和反向代理服务器,广泛应用于静态文件服务、负载均衡以及HTTP和HTTPS服务。其特点是并发处理能力强、内存占用少,因此在高流量网站中非常受欢迎。在离线安装`nginx`时,你需要...
在构建高性能和灵活的服务调度系统时,`nginx`作为一个强大的反向代理和负载均衡器,常常被用来处理复杂的网络流量管理。结合`lua`脚本语言以及特定的模块,如`dyups`,可以实现自定义的服务调度策略。本文将详细...
其次,Nginx作为一个高性能的反向代理服务器和HTTP缓存,它在高并发处理中扮演着至关重要的角色。Nginx通过异步非阻塞I/O模型,可以高效地处理大量并发连接,减轻后端服务器的压力。Nginx可以作为SpringCloud微服务...
3. **负载均衡**:Nginx 可以根据预设的策略(如轮询、最少连接数、IP 哈希等)分配客户端请求到多个服务器,实现负载均衡。 4. **HTTP 和 HTTPS 协议支持**:Nginx 支持 HTTP 和 HTTPS 协议,能够进行 SSL/TLS ...
3. **负载均衡**:Nginx可以根据不同的策略(如轮询、权重、最少连接等)将请求分发到多个后端服务器,实现负载均衡,提高系统的整体性能和容错能力。 4. **SSL/TLS支持**:Nginx可以处理HTTPS请求,提供安全的加密...
1. **Nginx基础**:Nginx的安装配置、反向代理、负载均衡、静态文件服务等功能。 2. **高可用与高性能**:Nginx的主备热切换、负载均衡策略、缓存机制,以及如何处理高并发场景。 3. **HTTPS与SSL/TLS**:证书配置、...
Nginx是一款高性能的HTTP和反向代理服务器,常被用于互联网上的网站和应用程序的负载均衡、静态内容服务以及反向代理。Nginx以其轻量级、高并发、低内存消耗的特性而闻名,它在处理静态文件和反向代理方面表现出色,...
同时,Nginx 还支持负载均衡,通过 `upstream` 块分配请求到多个服务器,提高服务可用性。 7. **日志管理** Nginx 默认会记录访问日志,日志文件位于 "logs" 目录。通过修改 "nginx.conf" 中的 `access_log` 和 `...