微信号:infoqchina

介绍:有内容的技术社区媒体

百万并发下的Nginx性能优化之道

2018-11-06 08:23 InfoQ

Nginx 很火,火到无论是创业公司,还是 BAT 等一线互联网公司,都会使用 Nginx。因为它就像一个万能药,在任何存在性能需求的场合总能找见它的身影。它可以轻松在百万并发连接下实现高吞吐量的 Web 服务,同时诸多应用场景下的问题都可以通过种种 Nginx 模块得以解决,而我们所需的工作量也并不大。

实战出真知。

2010 年初,我在思科第一次使用了 Nginx。那时我们的文档上传下载服务需要做重构,于是我在调研了 Lighthttpd、Nginx 等开源组件后,决定选择 Nginx 重构服务。因为我在阅读完 Nginx 的源码后,被其设计哲学、类 Linux 内核的代码风格所吸引,且模块设计极其稳定,6 年的快速发展也几乎未有何变化。

Nginx 天生就适合在 Linux 服务器上处理百万、千万级的并发连接,而优秀的架构使得它未来不需要重构,所以它的生态圈内的第三方模块长期有效。而长年的发展下日益增多的第三方模块进一步赋能 Nginx,使 Nginx 适用于更多的场景,甚至渗透到 LVS 的领域与 F5 这样的硬件产品竞争!同时,如 OpenResty 或者 Tengine 这样的第三方模块群,进一步发展出了新生态,使 Nginx 的应用进一步向应用防火墙、CDN 等领域扩展。

下图,是 Nginx 的三个主要应用场景。

   

我也经常提醒身边的朋友,学好 Nginx,可以让你在工作中获得立竿见影的效果。

  • 如果你是一个前端工程师,在用 Node.js 写 Web 程序,使用 Nginx 可以让你高效处理静态资源文件;

  • 如果你是一个运维工程师,那么在你有效配置 Nginx 后,可以为公司节省大量的 IT 成本;

  • 如果你是一个后端开发工程师,遇到性能瓶颈时,你完全可以使用 Nginx 的第三方模块或 OpenResty 的 Lua 模块,非常高效地解决你的性能瓶颈。

可在我与 Nginx 打交道的近 10 年里,遇到不少会用却不善用 Nginx 的开发者,就好比你有一把好剑,可你却拿它来砍柴,这是一件很可惜的事情。打个比方,高并发导致多个请求过来,有些开发者会用最繁杂的程序来配置转发,却不知其中还有更轻便更有技巧性的设置。这种情况的发生,时常会让自己开发效率极低,且显得笨拙。


    

我是谁

我是陶辉,杭州智链达数据有限公司担任 CTO 兼联合创始人,著有《深入理解 Nginx:模块开发与架构解析》一书。

我决定制作这门课,是因为我的职业经历允许我从体系化的视角重新解读 Nginx。

我早年在华为网管软件中负责网络中间件,这让我对 Nginx 这样的平台及中间件所应用的开发方法有许多共鸣;

后来在腾讯,我开始处理亿级用户海量数据,深度挖掘 linux 极限性能的过程与 Nginx 非常相似;

在思科时,我大量编写了 Nginx 模块,出版了《深入理解 Nginx:模块开发与架构解析》一书;

在阿里云,我在 ECS 的优化中深入硬件性能的提升,以及对大量服务器构成的集群做架构设计,这使得我可以在更深的视角看待 Nginx;

在杭州智链达数据有限公司,我更关注在如何有限的团队规模下,使用 Nginx 来保持开发效率,以提供高可用性。

但网络上关于 Nginx 的使用介绍非常多,但往往有两个问题:

  1. 仅从如何使用层面介绍,没有把离散的知识点串成线,这导致大家难以应对未出现过的、个性化的定制场景;

  2. 没有成体系的性能优化知识介绍,在企业生产环境下我们需要从应用到系统的完整优化方案。

因此,我相信在“如何学好 Nginx”这件事上,我可以给你系统的指导,而这十年积累,都浓缩到我在极客时间开设的《Nginx 核心知识 100 讲》视频课程中。

通过这门课,你可以学到什么?

《Nginx 核心知识 100 讲》视频课程共 100 讲,我会结合多年 Nginx 研发经验,为你从 HTTP 应用层的视角、分布式集群的视角、硬件及操作系统内核优化的视角为大家解读 Nginx 的核心知识。 我会将 Nginx 的常用知识点、常用模块,在 Nginx 的设计方法论下从请求的处理流程中为大家解读,帮助大家从 Nginx 的初级使用者成长为高阶使用者。

学完这门课,你将彻底明确 Nginx 的能力模型,了解 Nginx 的工作原理,清楚怎样使用 Nginx 搭建出定制化的 Web 服务器或者微服务集群的负载均衡服务,并理解什么样的 API 服务适合用 Nginx 编写,同时清楚如何在 linux 操作系统上优化 Nginx,使 Nginx 可以轻松应付百万并发连接。

简而言之,你将收获到以下四个方面:

  1. 基础知识详解及核心架构剖析

  2. 搭建支持百万高并发的 Nginx 服务

  3. 从内核优化到源码解读的全方位拆解

  4. OpenResty + Nginx 开发实战

只要跟着我学,你就可以把关于 Nginx 的零零散散的知识点串成一条线,再将网络、操作系统、磁盘等知识与 Nginx 相关知识组成一个知识网,从而可以在工作中灵活运用这些知识和技能,使用 Nginx 最大化地利用好服务器的性能,搭建出更稳定的服务。

订阅福利

福利一:限时优惠¥68,原价¥129,11 月 17 日恢复原价

福利二:每邀请一位好友购买,你可获得 24 元现金返现,多邀多得,上不封顶,随时提现。(提现流程:极客时间 App - 我的 - 分享有赏)

ps:可加本专栏运营微信:imonica1010,免费获得此课程的 PDF 课件。

如何订阅

点击「阅读原文」或下图海报,即可试看或订阅此课程。

  

点击“阅读原文”,试看或订阅此课程

 
InfoQ 更多文章 写给计算机专业毕业生的22条宝贵建议 大数据应用发展史:从搜索引擎到人工智能 Facebook开源内核组件和工具;三星否认关闭开源集团;运维主管离职倒卖代码,非法获利800万被抓丨Q新闻 微软的开发流程是否有问题?从Windows功能更新事故频发说开去 刚刚,腾讯披露最新战略,迎接它的20周年
猜您喜欢 2014深圳制汇节DAY.1速报 面向决策的数据分析:R语言数据挖掘实战案例研讨会 分享图片 【读者译】James Bach:测试人员的七种类型 揭秘MIUI视频从0到千万用户的迭代