【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

进阶 Nginx 高手必须跨越的 5 座大山

轻松应对百万并发下的性能优化难题

  • 2018-12-26
  • 本文字数:1835 字

    阅读完需:约 6 分钟

进阶 Nginx 高手必须跨越的 5 座大山

Nginx 很火,因为它就像一个万能药,在任何存在性能需求的场合总能找见它的身影。它天生就适合在 Linux 服务器上处理百万、千万级的并发连接,实现高吞吐量的 WEB 服务。


如果你想让自己的产品在支持高并发请求的同时保持高效的服务,Nginx 可能是最好的选择。


另外,经过多年的发展,诸如 OpenResty 这样的第三方模块群进一步赋能 Nginx,使 Nginx 的应用进一步向应用防火墙、CDN 等领域扩展,甚至渗透到 LVS 的领域与 F5 这样的硬件产品竞争。


可以说,技术人员掌握 Nginx,便掌握了应对高并发以及海量数据处理的利器。而且,在学习 Nginx 的过程中,还能学习到许多优秀的设计思想,进一步提升我们的编码能力和架构设计能力,从而大大拓展我们的职业道路。

但大多数人使用 Nginx 都停留在这几个级别:

第一种:使用 Nginx 配置最简单的反向代理服务或者静态资源服务,当扩展功能时发现新增的指令 Nginx 不支持,但又不懂如何增加 Nginx 模块,如何分析 access 日志。


第二种:可以根据源码定制安装 Nginx,对网上流传的大众配置做一些个性化的修改,但遇到修改 proxy_pass 后的 URL 上游服务不正常等问题时就束手无策,不清楚 Nginx 各个目录的意义,也不清楚 Nginx 的进程结构。


第三种:能够顺畅地使用 Nginx 的常用功能,但不清楚第三方模块发生冲突时的解决方案、stale 过期缓存的用法、 Nginx 诸多变量是如何被赋值的、听说 if 指令是邪恶的却不知道它的设计理念及正确用法等等。


第四种:可以正确地使用 Nginx 的功能及第三方模块,并按照网络上常见的优化参数优化性能,但对如何系统化地优化性能没有头绪,对于 Nginx、Linux 提供的内存缓冲区、网络类等诸多指令和参数的优化没有头绪。


第五种:可以熟练使用 Nginx,但对 OpenResty 的 Lua 模块如何与 Nginx 结合使用以及对 Nginx 性能影响不太清楚,对 Nginx 源码的理解没有达到由点到面的程度。


基于以上分类,我制定了一份 Nginx 学习知识图谱。你完全可以对比这张学习图谱,进行查漏补缺,做深入的针对性学习。


进阶 Nginx 高手,你必须跨越的 5 座大山

1、深入理解 Nginx 架构



了解事件驱动机制是深入优化 Nginx 性能、判定第三方模块性能的基础。而了解 Nginx 的进程结构,则是我们对 Nginx 做日常维护的必要条件,也是我们优化 Nginx 性能的理论基础。另外,变量是 Nginx 实现模块间解耦合的关键。这些知识都需要我们牢固掌握,为后面的进阶学习打下坚实基础。


2、对 HTTP 模块要了如指掌



HTTP 请求处理过程中分为 11 个阶段。理解每个 HTTP 模块所处的阶段,并清楚该模块在这一阶段中的位置顺序,有助于我们定位指令不生效或者与预期功能不符等问题,提高定位各种 Bug 的效率,也可以帮我们熟悉缺乏文档的第三方模块。


点击试看「 HTTP 模块」


3、反向代理与负载均衡



反向代理有一套通用的处理流程,掌握反向代理处理请求的完整流程,能让我们熟练使用 HTTP 协议反向代理,以及熟悉如 memcached、gRPC 等同类的反向代理,在优化性能时,也能对相关缓存、超时等指令更有针对性的做个性化配置。


4、性能优化



内存优化有助于我们降低处理每个请求消耗的内存,进而可以提升并发量,同时,加速内存的分配速度也有助于提升吞吐量。当需要 Nginx 应对数十万甚至更多 QPS 时,通过优化传输层协议栈参数能提升系统并发能力、吞吐量,也是必须经历的步骤。另外,磁盘 IO 往往是拖慢 Nginx 性能的重要因素。这些都是性能优化的关键所在,需要我们深入进行学习。


5、熟练掌握 OpenResty



在 Lua 代码中可以调用 Nginx 的特性,调用部分 Nginx 模块提供的功能,尤其可以与 Nginx 中的变量交互,这是 OpenResty 实现强大功能的前提。学会 OpenResty 后,我们就可以让 Nginx 成为功能更强大的 API 服务,尽一步提升系统的吞吐量和并发能力。

总结

我已经帮你基本上梳理了“学好 Nginx 需要的 5 大模块内容”及“细化的知识点”,你只要跟着以上内容好好梳理自己的学习计划,跨过这 5 座大山,必定可以进阶!


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

限时福利:

1、《Nginx核心知识100讲》正在限时拼团,原价¥129,拼团价¥99/2 人成团,也有几个试看视频,欢迎观看。


2、凭借购买截图,还可获得“极客时间最新知识图谱”,加专栏运营 Monica 微信:imonica1010


2018-12-26 16:234750

评论 3 条评论

发布
用户头像
这个广告打的措手不及
2019-08-13 16:28
回复
用户头像
有没有讲解下,在什么场景下适合选用nginx或者openresty的内容。
2019-04-25 11:26
回复
没有更多了
发现更多内容

研究了代码质量后,开发效率提升10倍,bug减少20倍!!

SoFlu软件机器人

交易日均千万订单的存储架构设计与实践 | 京东物流技术团队

京东科技开发者

架构设计 订单系统 存储架构 企业号9月PK榜

一文浅谈Mockito使用 | 京东云技术团队

京东科技开发者

测试 Mockito Mock 企业号9月PK榜

为什么GPU引领加速计算时代

青椒云云电脑

GPU算力

GPT 被曝重大缺陷;腾讯侦破国内首个 AI 游戏外挂;特斯拉人形机器人再进化丨 RTE 开发者日报 Vol.56

声网

艺术与区块链的融合—NFT开发的创意之旅

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

【PPT下载】杭州 Atlassian 社区四周年活动

跟YY哥学Jira

Jira ACE #研发效能 Atlassiam Jira Service Management

支持国产基础硬件的云管平台哪家好?为什么?有哪些功能?

行云管家

云计算 云安全 云管平台 行云 云成本

DeFi/DApp单双币/子母币流动性质押LP挖矿项目系统开发

l8l259l3365

Python Web框架

人工智能、GPU与云计算的关系和应用

青椒云云电脑

人工智能 GPU算力 AI绘画

一文读懂GPU参数选择

青椒云云电脑

云桌面 GPU算力

国产化运维安全审计系统哪家好?支持信创吗?有哪些功能?

行云管家

国产化 安全运维 运维审计 国产化平台

Vulkan并发机制

江湖修行

android 前端 opengl 渲染 vulkan

可观测性成熟度模型介绍(一)

乘云 DataBuff

3D设计软件Rhinoceros 6 mac(犀牛6中文直装)完美激活版

mac

windows 三维建模软件 苹果mac Rhinoceros 犀牛6

支付宝小程序云,智能开放的增长引擎

TRaaS

支付宝小程序 AI 大模型

第六周作业

大肚皮狒狒

为什么GPU在深度学习扮演重要角色?

青椒云云电脑

gpu

人工智能的催化剂:GPU高性能计算

青椒云云电脑

人工智能 gpu GPU算力 AI绘画

GPU云服务器有什么优势?

青椒云云电脑

GPU云桌面

怎么选择适合深度学习的GPU

青椒云云电脑

云桌面 AI绘画 云桌面系统

QCN9074, QCN9274, QCN6274 - Wi-Fi 6E bands: 2.4 GHz, 5 GHz and 6 GHz

wifi6-yiyi

QCN9074 Wi-Fi 6E

【有奖体验】轻点鼠标,让古籍数字化“重生"

Serverless Devs

Serverless 云原生 托管 AIGC

后端服务之应用预热 | 京东云技术团队

京东科技开发者

JS防抖 抖动 jsf 企业号9月PK榜 应用预热

GPU应用:从计算机图形学到人工智能

青椒云云电脑

人工智能 gpu AI绘画

高级编程计算工具MATLAB R2023a激活中文版附密钥

胖墩儿不胖y

Mac软件 数学计算工具

进阶 Nginx 高手必须跨越的 5 座大山_语言 & 开发_陶辉_InfoQ精选文章