浏览 3.8k
陶辉老师 Nginx 密码学直播
https://blog.cloudflare.com/optimizing-tls-over-tcp-to-reduce-latency/
Nginx 动态 TLS record size cloudflare 的优化博客如上
TLS record size 最大 16K,最小应该是16B?
这个动态调节 record size 是怎么做到的(基于什么输入信息来调节),动态调节之前,这个record size nginx是怎么做的
直播提问时,时间来不及了,太紧张,问题没打好。。。

按点赞数排序
按时间排序
1、分组是基于16字节128比特位,这与传输是两回事。传输时,会将许多分组放在一起传输,这就是tls record size,openssl提供有设置的函数,而Nginx则将函数值通过ssl_record_size暴露在nginx.conf中,默认为16KB。
2、cloudflare中设置了lo初始tls record size,默认是1个MSS,当发完ssl_dyn_rec_threshold 个record后,将上升到ssl_dyn_rec_size_hi 默认为3个MSS,再发完ssl_dyn_rec_threshold 个record,最终上升到ssl_buffer_size即16KB。在这些过程中,如果连接空闲时间超过1秒,那么record将回复到ssl_dyn_rec_size_lo
1
回答于2020-11-15 09:11
学习如何使用Nginx,可以参考我在极客时间上的课程《Nginx核心知识100讲》,我通过155节视频课,从模块、部署、性能、原理上系统地详解了Nginx,而且视频课有个好处,可以直接敲代码演示,相信对你有帮助。
如果你开始学习Nginx模块开发,那么可以看下我的书《深入理解Nginx:模块开发与架构解析》。
书哪里都有,我列下《Nginx核心知识100讲》的二维码吧:
没有回答,我就只能自己回答了。
查了下代码,进行gdb跟踪调试后发现:这个主要是因为,每个worker单独维护一个前后端 “链路”关联的四元组信息,在多个worker的情况下,不同的worker保存“链路”关联信息相互独立,彼此不共享。因此即使是相同的IP和端口发来的消息,只要是分配到不同的worker进行处理,都有可能查不到之前的“链路”关联信息,从而无法复用。
解决办法:
1. 单worker配置(性能可能偏低)
2. 修改代码,使用共享内存保存已有的前后端“链路”关联信息,不同worker之间共享结果
微信公众号
加入微信群