系统性能调优必知必会
陶辉
智链达CTO、前阿里云高级技术专家
立即订阅
5544 人已学习
课程目录
已完结 43 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 万变不离其宗,性能优化也有章可循
免费
基础设施优化 (6讲)
01 | CPU缓存:怎样写代码能够让CPU执行得更快?
02 | 内存池:如何提升内存分配的效率?
03 | 索引:如何用哈希表管理亿级对象?
04 | 零拷贝:如何高效地传输文件?
05 | 协程:如何快速地实现高并发服务?
06 | 锁:如何根据业务场景选择合适的锁?
系统层网络优化 (7讲)
07 | 性能好,效率高的一对多通讯该如何实现?
08 | 事件驱动:C10M是如何实现的?
09 | 如何提升TCP三次握手的性能?
10 | 如何提升TCP四次挥手的性能?
11 | 如何修改TCP缓冲区才能兼顾并发数量与传输速度?
12 | 如何调整TCP拥塞控制的性能?
13 | 实战:单机如何实现管理百万主机的心跳服务?
应用层编解码优化 (5讲)
14 | 优化TLS/SSL性能该从何下手?
15 | 如何提升HTTP/1.1性能?
16 | HTTP/2是怎样提升性能的?
17 | Protobuf是如何进一步提高编码效率的?
18 | 如何通过gRPC实现高效远程过程调用?
期中考试周 (3讲)
期中考试|行至半程,你的收获如何呢?
加餐1|特别福利:陶辉视频课精选
加餐2 |答疑精选:这些问题你都清楚吗?
分布式系统优化 (12讲)
19 | 如何通过监控找到性能瓶颈?
20 | CAP理论:怎样舍弃一致性去换取性能?
21 | AKF立方体:怎样通过可扩展性来提高性能?
22 | NWR算法:如何修改读写模型以提升性能?
23 | 负载均衡:选择Nginx还是OpenResty?
24 | 一致性哈希:如何高效地均衡负载?
25 | 过期缓存:如何防止缓存被流量打穿?
26 | 应用层多播:如何快速地分发内容?
27 | 消息队列:如何基于异步消息提升性能?
28 | MapReduce:如何通过集群实现离线计算?
29 | 流式计算:如何通过集群实现实时计算?
30 | 如何权衡关系数据库与NoSQL数据库?
加餐与分享 (8讲)
加餐3 | 大厂面试到底在考些什么?
大咖助场1 | 李玥:高并发场景下如何优化微服务的性能?
大咖助场2|庄振运:与程序员相关的SSD性能知识
加餐4|百万并发下Nginx的优化之道
大咖助场3|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(上)
大咖助场4|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(下)
加餐5 | 如何理解分布式系统?
加餐6|分布式系统的本质是什么?
结束语 (1讲)
结束语 | 从业 IT 20年后,我将最看重什么?
系统性能调优必知必会
15
15
1.0x
00:00/00:00
登录|注册

加餐4|百万并发下Nginx的优化之道

陶辉 2020-07-10
你好,我是专栏编辑冬青。今天的课程有点特别,作为一期加餐,我为你带来了陶辉老师在 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《系统性能调优必知必会》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(3)

  • 0xFE
    1."我们还可以将小报文合并后批量发送,通过减少 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-11
    1
    4
  • 云学
    这篇文章关于tcp好多优化参数呀

    作者回复: 这是18年时一次大会中的分享,总结性质的文章参数比较多,其实它们在第2部分的文章中都有提到哈。

    2020-07-24
  • Jeff.Smile
    老师的治学态度令人钦佩
    2020-07-17
收起评论
3
返回
顶部