EN
返回档案库

案例库 · 软件与 IT · 技术决策 · 2002–2019

nginx用事件处理数千连接,成为Web头号服务器

Igor Sysoev的异步事件驱动Web服务器在负载下内存占用低,超越了每连接一线程的对手,并以6.7亿美元卖给F5。

nginx (NGINX, Inc.)

那一手

21世纪初,Web服务器为每个连接分配一个线程或进程,高流量网站会在同时约一万个连接时撞墙,即C10K问题。俄罗斯开发者Igor Sysoev于2002年开始编写nginx,正是为了解决俄罗斯大型门户网站Rambler的这个问题。

nginx把连接当作事件,由少量进程处理,因此在负载下内存占用保持低位,行为可预测。同样的核心用作HTTP服务器、反向代理、内容缓存、负载均衡器以及TCP/UDP或邮件代理,采用模块化架构。

nginx于2004年10月首次发布,从俄罗斯门户网站扩展到全球一大部分网站;nginx.org称其为Netcraft统计的全球最受欢迎的Web服务器。2011年成立Nginx, Inc.提供商业支持,2019年3月F5以约6.7亿美元收购该公司,创始团队留任。

为什么管用

  • 事件驱动处理使内存占用在大量连接下保持平稳
  • 一个服务器覆盖代理、缓存、负载均衡和TLS
  • 开源基础建立了庞大社区和声誉
  • 低资源占用使其在规模上运行成本低
值了多少把每个连接当作轻量事件处理,而不是一个线程聪明

可以搬走什么

当瓶颈是每个连接的资源时,要改变资源模型:事件驱动多路复用优于增加硬件或线程,一个高效服务器可以取代一群服务器。

后来呢

在F5旗下,nginx仍是开源项目和商业产品系列,广泛用作Web流量的前端和Kubernetes入口控制器标准。收购金额约6.7亿美元,开源社区明确是F5购买的一部分。

资料来源

发现哪里写错了?告诉我们。

同一路聪明