nginx服务器上的超时错误不一致

nginx服务器上的超时错误不一致,nginx,timeout,reverse-proxy,Nginx,Timeout,Reverse Proxy,我有一个应用程序,它试图从Javascript应用程序发出ajax请求,从nginx服务器检索xml文件。正常情况下,一切正常,但我经常在nginx日志中看到错误(以及从我的应用程序错误报告中获取错误),nginx在获取期间会超时: 2015/11/16 21:15:21 [error] 1208#0: *4894044 upstream timed out (110: Connection timed out) while connecting to upstream, client: 209

我有一个应用程序,它试图从Javascript应用程序发出ajax请求,从nginx服务器检索xml文件。正常情况下,一切正常,但我经常在nginx日志中看到错误(以及从我的应用程序错误报告中获取错误),nginx在获取期间会超时:

2015/11/16 21:15:21 [error] 1208#0: *4894044 upstream timed out (110: Connection timed out) while connecting to upstream, client: 209.95.138.54, server: www.servername.com, request: "GET /Shape%20Textures/Metal/Born%20to%20Shine.jpg?agentView=436314 HTTP/1.1", upstream: "http://127.0.0.1:3000/AQO/Shape%20Textures/Metal/Born%20to%20Shine.jpg?agentView=436314", host: "www.servername.com.com", referrer: "https://www.servername.com.com/?nid=39956&mode=edit"
我们有时也会遇到类似的错误:

2015/11/17 19:03:16 [error] 1002#0: *54042 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 137.164.121.52, server: www.servername.com, request: "POST /projects/?q=node/36375/update_project_time_and_stats HTTP/1.1", upstream: "http://127.0.0.1:3000/projects/?q=node/36375/update_project_time_and_stats", host: "www.servername.com", referrer: "https://www.servername.com/AQO/?nid=36375&mode=edit"
我似乎有类似的帖子,有类似的超时时间,但所有这些帖子似乎都是可以复制的。这个问题从未发生在我身上,但在实时服务器上运行时,我每天会看到5-30次超时

这是我的nginx配置:

client_max_body_size 50M;

server {
    server_name servername.com;
    return 301 $scheme://www.servername.com$request_uri;
}

server {
    listen 80;
    listen 443 ssl;
    fastcgi_read_timeout 120;
    ssl_certificate /path/to/ssl/star_servername_com.pem;
    ssl_certificate_key /path/to/ssl/star_servername_com.key;

    # Redirect all non-SSL traffic to SSL.
    if ($ssl_protocol = "") {
      rewrite ^ https://$host$request_uri? permanent;
    }

    root /usr/share/nginx/html;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name www.servername.com;

    location / {
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://127.0.0.1:3000;
            proxy_read_timeout 120s;
    }
}
既然我不能复制它,我想知道我怎样才能追踪到这个问题

连接到时上游超时(110:连接超时) 上游

表示您的上游服务器未及时接受连接

读取响应时上游超时(110:连接超时) 上游集管

表示您的上游服务器没有及时响应应答

因此,请在127.0.0.1:3000检查上游服务器。它可能设置了少量的传入连接或某种DDoS保护,或者目前负载很重或其他情况。

我想介绍一下如何优化您的设置


虽然不是最好的解决方案,但取决于您想要实现的目标,您可以简单地将
代理读取超时时间增加到例如
300

检查您的上游服务器日志?我从未听说过上游服务器日志,也没有在谷歌搜索中找到多少,这是可以通过nginx启用的吗?我指的是127.0.0.1:3000服务器日志。有一个node.js服务器运行在端口3000上。其中没有任何内容与超时有关。有一个node.js服务器运行在端口3000上,但据我所知,node.js没有对传入连接设置任何限制。Ubuntu的默认传入连接数为1024,如ulimit所示-如果您的Node.js服务器负载过重或运行很长的任务,您可以尝试加密nginx的和。其默认值为60秒,您可能需要增加此设置