nginx lua socket timeout 问题处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx lua socket timeout 问题处理相关的知识,希望对你有一定的参考价值。

参考技术A 2015/1/14日, 在192.168.2.209环境, web端进行大文件(300-500M)上传时, nginx经常报错. 错误信息如下:

经过分析, 错误可能是一下原因导致的:

经过排查, 1,2,3这几个配置确实有问题, 可以优化的. 但改完后, 上传大文件还是报错. 以下是上面几点的优化配置:

优化了这几点后, 大文件上传成功的概率更高了, 但还不是100%. 经过更加仔细的研究nginx lua关于socket的 文档 , 我推断问题是上面的第4点. 即lua socket的tcpsock:send() 报了超时错误(也就是write timeout了). 这一点我是从文档中看出来的, 以下是我修改后的fastdfs.lua和uploader.lua

即现在connect, send, receive的timeout都是60s, 上传大文件全部成功了!

tcpsock:connect
tcpsock:send
tcpsock:set_timeout
tcpsock:set_keepalive

更新记录

Nginx配置socket转发TCP协议传输,记录一下

worker_processes  1;
events
    worker_connections  1024;

http
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server
        listen       8080;
        server_name  localhost;
        location /
        root html;

       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html
            root   html;
       
   

stream
        upstream socket
                hash $remote_addr consistent;
                server 127.0.0.1:15051 weight=1 ;
       
    server
      listen 8090;
      proxy_connect_timeout 100s;
      proxy_timeout 100s;
      proxy_pass socket;    
    

外部访问8090,nginx跳转到15051,nginx转发socket协议的配置写法,TCP协议传输

以上是关于nginx lua socket timeout 问题处理的主要内容,如果未能解决你的问题,请参考以下文章

Lua 获取本地IP

nginx break-circus

Nginx配置socket转发TCP协议传输,记录一下

keepalive 配置文件在哪

nginx的upstream异常

从openresty lua发出https tls请求