求教Windows下Nginx作为Tomcat负载均衡出现的超时问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

求教Windows下Nginx作为Tomcat负载均衡出现的超时问题

落地花开啦 2016-06-01 22:37:00 1992

我的环境是Windows 7 32位,Nginx为1.7.3,Tomcat的版本是7.0.57
配置文件部分如下(不贴全部的,就改了下面的)

http {
    include       mime.types;
    default_type  application/octet-stream;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    #gzip  on;
  
    upstream localhost_tomcat {
        server localhost:808<span style="background-color:;"></span>0;
    }
 
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
       #access_log  logs/host.access.log  main;
 
        location ~ \.jsp$ {
            proxy_pass  http://localhost_tomcat;
            proxy_connect_timeout 2s;
        }
 
        location ~ \.(html|js|css|png|jpg|gif)$ {
            root    html;
        }
 
        #error_page  404              /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

配置后是可以访问到Nginx后面的Tomcat的,但是在某次刷新(不定,比较多的情况是在请求页面后第二次刷新)时出现长时间的等待(60秒左右)然后才有响应。Nginx的错误日志中有一段是这样的:
screenshot
都是出现了Timeout,但我不知道具体是卡在了Nginx上还是Tomcat上面,现在的暂时办法是在配置proxy_pass的时候加上一段:
proxy_connect_timeout 2s;
强制Nginx在负载的时候2秒超时
现在我想问的是为什么会出现这样的情况,是卡在了哪里(Nginx还是Tomcat或者其他的?),切实的解决办法是什么,为什么能解决?我查到的资料多是英文的,无奈英文水平处于小学以下,而且很多情况跟我的不太一样,还有很多资料是关于Nginx和PHP cgi或者fastcgi的,原谅我对于php-cgi和fastcgi的运行机制不熟,也不知道这些资料对我有没有借鉴意义,如果有幸让哪位大神提到这些运行机制我愿意洗耳恭听。好了,字码太多怕待会你们看不下去都跑了,就写到这,漏了再补充吧。先谢过了

负载均衡 前端开发 JavaScript Java 应用服务中间件 PHP nginx Windows
分享到
取消 提交回答
全部回答(0)
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题