openresty 参数调优 sndbuf

102 阅读2分钟

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配置技巧:

  • 对于大文件的上传或下载,可能需要较大的缓冲区。
  • 对于需要实时响应的应用,例如聊天服务器,可能需要较小的缓冲区,以便及时发送数据。