openresty 参数调优 sndbuf
背景:文件下载服务,一直反应下载速度不理想。我们的下载服务需要通过openresty反向代理。
优化前:内外网下载速度:20M/s~50M/s
优化后:内外网下载速度:150M/s~250M/s
问题发现:
1.不走openresty直接IP:port 访问服务下载,速度300M/s~350M/s
2.通过openresty代理,访问服务下载,速度20M/s~25M/s
通过上面两步,发现是openresty导致的下载速度下降。作为一个成熟的服务,我们的openresty有大量的插件和lua脚本,刚开始以为是由于某人写出来的代码导致的,开始撸代码,一遍又一遍,发现没有问题。
为了检测是否openresty 配置的问题,我们部署了一个纯净的openresty(无任何脚本,没有配置任何参数,仅代理服务),结果发现下载速度可以达到300M/s~350M/s,那么问题来了哪个参数对下载影响这么大呢?
研究nginx的配置,发现有以下配置
listen 0.0.0.0:80 sndbuf=1024k;
修改为以下配置做测试:
listen 0.0.0.0:80 sndbuf=10240k;
发现下载速度提高到 150M/s~250M/s
问题根源找到了,参数sndbuf 太小,导致下载速度变慢了,那这个参数是干什么的呢?
在网上差了很多资料,发现 参数sndbuf是控制nginx发送缓存大小。
sndbuf配置技巧:
- 对于大文件的上传或下载,可能需要较大的缓冲区。
- 对于需要实时响应的应用,例如聊天服务器,可能需要较小的缓冲区,以便及时发送数据。