加餐4|百万并发下Nginx的优化之道
陶辉
该思维导图由 AI 生成,仅供参考
你好,我是专栏编辑冬青。今天的课程有点特别,作为一期加餐,我为你带来了陶辉老师在 GOPS 2018 · 上海站的分享,以文字讲解 + PPT 的形式向你呈现。今天的内容主要集中在 Nginx 的性能方面,希望能给你带来一些系统化的思考,帮助你更有效地去做 Nginx。
优化方法论
今天的分享重点会看这样两个问题:
第一,如何有效使用每个连接分配的内存,以此实现高并发。
第二,在高并发的同时,怎样提高 QPS。
当然,实现这两个目标,既可以从单机中的应用、框架、内核优化入手,也可以使用类似 F5 这样的硬件设备,或者通过 DNS 等方案实现分布式集群。
而 Nginx 最大的限制是网络,所以将网卡升级到万兆,比如 10G 或者 40G 吞吐量就会有很大提升。作为静态资源、缓存服务时,磁盘也是重点关注对象,比如固态硬盘的 IOPS 或者 BPS,要比不超过 1 万转每秒的机械磁盘高出许多。
这里我们重点看下 CPU,如果由操作系统切换进程实现并发,代价太大,毕竟每次都有 5 微秒左右的切换成本。Nginx 将其改到进程内部,由 epoll 切换 ngx_connection_t 连接的处理,成本会非常低。OpenResty 切换 Lua 协程,也是基于同样的方式。这样,CPU 的计算力会更多地用在业务处理上。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Nginx性能优化方法总结 Nginx作为一款性能卓越的Web服务器,在应对百万并发时,需要进行一系列的优化。首先,有效利用每个连接分配的内存,实现高并发和提高QPS的目标。其次,深入解析Nginx处理HTTP请求的流程,包括请求到来、处理请求、请求的反向代理和返回响应。此外,强调了Nginx在应用层优化方面的重要性,包括协议优化和压缩优化。文章还提到了Nginx的限速功能、Worker间负载均衡、超时处理、缓存优化、减少磁盘IO等方面的优化策略。另外,还介绍了针对操作系统内核的优化方法,包括网络层和传输层的配置、CPU缓存的亲和性优化、TCP网络选项的调整等。总的来说,本文通过深入剖析Nginx的性能优化方法,为读者提供了系统化的思考,帮助他们更有效地使用Nginx,减少RTT时延,提升并发连接。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《系统性能调优必知必会》,新⼈⾸单¥59
《系统性能调优必知必会》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 云学这篇文章关于tcp好多优化参数呀
作者回复: 这是18年时一次大会中的分享,总结性质的文章参数比较多,其实它们在第2部分的文章中都有提到哈。
2020-07-24 - stackWarn1."我们还可以将小报文合并后批量发送,通过减少 IP 与 TCP 头部的占比,提高网络效率。在 nginx.conf 文件中打开 tcp_nopush、tcp_nodelay 功能后,都可以实现这些目的 " 这里开启nodelay不是关闭nagle算法,从而不合并小包吗?感觉讲的矛盾了,求老师答疑 2. 出现过一个场景,开启numa2个node 把网卡中断绑定到1个node中的所有cpu,和 网卡中断一对一绑定到2个node的全部cpu,发现后者效果不好,单核si更高了,是numa node的竞争导致的吗?生产接入层nginx是否建议开启numa,是否有生产经验分享下呢?2020-07-1127
- 招谁惹谁并发总有个上限,调优也有极限,调到什么时候是合适的呢?2022-06-12
- J.Smile老师的治学态度令人钦佩2020-07-17
收起评论