Nginx 反向代理Tomcat 高峰时报 connect() failed (110: Connection timed out) while connecting to upstream,

justin 发布于 2011/11/30 16:59
阅读 23K+
收藏 0

Nginx 反向代理Tomcat 高峰时报 connect() failed (110: Connection timed out) while connecting to upstream,

nginx-upstream-jvm-route

 

操作系统 :虚拟化的:Centos 5.5 cpu 8核 内存12g 硬盘100G

Nginx 1.0.10  tomcat6.0 和nginx-upstream-jvm-route

平峰一切OK 反应很快, 一到高峰期就很多connect() failed (110: Connection timed out) while connecting to upstream,

因为用的是Session 所以客户端就频繁报超时了。

配置文件如下:

 

 

worker_processes  8;

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

worker_rlimit_nofile 51200;

timer_resolution 2s; #此参数加上效果也不明显,1s都也试了

events {

    use epoll;

    worker_connections  51200;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    server_names_hash_bucket_size 192;

    client_header_buffer_size 64k;

    large_client_header_buffers 8 64k;

    client_max_body_size 300m;

    sendfile        on;

    tcp_nopush     on;

    tcp_nodelay   on;

    #keepalive_timeout  0;

    send_timeout 60;

    keepalive_timeout  30;

    client_body_buffer_size 512k;

    proxy_connect_timeout  60;

    proxy_read_timeout    120;

    proxy_send_timeout    600;

    proxy_buffer_size    64k;

    proxy_buffers    8 128k;

    proxy_busy_buffers_size 256k;

    proxy_temp_file_write_size   256k;

    gzip  on;

    gzip_min_length  1k;

    gzip_buffers  4 16k;

    gzip_http_version 1.1;

    gzip_comp_level  5;

    gzip_types application/json text/plain application/x-javascript text/css application/xml;   

    gzip_vary on;

    upstream jkda_server {     

      # tomcat http port and jvmroute name;

      server 127.0.0.1:7080 weight=2 srun_id=jkda8009;  

      server 127.0.0.1:8810 weight=2 srun_id=jkda8019;     

      server 127.0.0.1:8820 weight=2 srun_id=jkda8029;   

      server 127.0.0.1:8830 weight=2 srun_id=jkda8039;     

      server 127.0.0.1:8840 weight=2 srun_id=jkda8049;

      server 127.0.0.1:8850 weight=2 srun_id=jkda8059;     

      server 127.0.0.1:8860 weight=2 srun_id=jkda8069;    

      server 127.0.0.1:8870 weight=2 srun_id=jkda8079;     

      server 127.0.0.1:8880 weight=2 srun_id=jkda8089;   

      server 127.0.0.1:8890 weight=2 srun_id=jkda8099;      

      jvm_route $cookie_JSESSIONID|sessionid reverse;

      }  

server {

    listen       80  default backlog=32768;

    server_name  localhost;

access_log off;

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|htm)$

{

expires 30d;

}

location ~ .*\.(css)?$

{

expires 8h;

}

   location / {

        root   /usr/share/nginx/html;

        index  index.html index.htm;

    }

        location /jkda/{

          proxy_redirect          off;

          proxy_set_header        Host $http_host;

          proxy_set_header        X-Real-IP $remote_addr;

          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

          proxy_pass http://jkda_server;

        }

 

    }

}

以下是问题补充:

@justin:gettimeofday 4398 网上查有说是这个原因造成的。因为是虚拟化的机器, 有没有人碰到过这种情况, (2011/11/30 17:17)
@justin: 按照红薯的操作在高峰期访问,非常慢,但查看人也不多,等了一会Tomcat正常了。百度了一下Tomcat假死,按此设置了一下,效果好相好了不少,有待观察。http://wenku.baidu.com/view/cc96da48c850ad02de80413f.html (2011/12/06 15:54)
@justin:原配置 : <Connector port="7870" address="127.0.0.1" protocol="HTTP/1.1" maxThreads="400" minSpareThreads="100" maxSpareThreads="300" acceptCount="600" connectionTimeout="20000" enableLoopups="false" redirectPort="9443" /> 修改后配置: <Connector port="7870" address="127.0.0.1" protocol="HTTP/1.1" maxThreads="800" minSpareThreads="10" maxSpareThreads="800" maxProcessors="2000" minProcessors="20" acceptCount="2000" connectionTimeout="60000" enableLoopups="false" redirectPort="9443" /> 修改后的效果可能产生了影响,原因待定。我再有发现再更新。 (2011/12/06 15:56)
加载中
0
红薯
红薯
我估计啊,问题还是出在你的应用程序性能上,或者你试试高峰期直接访问 tomcat 看看。
l
lwjab2003
我这边也是同样情况,写了个向客户端输出系统时间的极简单的java应用,jmeter高并发压力测试的时候就出现502了,connect failed,不知道是哪里问题。
o
olive
,我们这边也出现这种情况了,连续两天了。。 Nginx 反向代理Tomcat 高峰时报 connect() failed (110: ,
0
justin
justin
以下是我高峰期抓的连接图
=================all statuc 127.0.0.1所有tcp状态==============
    189 8810       
    191 8860       
    211 8830       
    229 8850       
    255 8890       
    263 8870       
    283 8880       
    326 8820       
    362 8840       
    676 7080       
=================all ESTAB状态 127.0.0.1===============
      1 8840       
      2 8870       
=================all statuc 192.168.83.2 80 port===================
1339
=================all ESTAB 192.168.83.2 80 port===============
1088
0
justin
justin
高峰期,tomcat的各个端口Time_wait较多,但ESTAB的,每个不超过3个,单机访问正常。。
0
justin
justin

gettimeofday 4398 网上查有说是这个原因造成的。因为是虚拟化的机器,

有没有人碰到过这种情况,

0
卧龙先生
卧龙先生
启动nginx之前,加上ulimit -SHn 65535
0
justin
justin
ulimit -a 显示结果,我已经在配置文件里加过了。
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 139264
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 102400
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 65536
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
0
justin
justin

我今天调了一下配置,只把动态的交给Tomcat处理,今天效果好了点,没有再报,等再多高峰期再看了。

 

     server

  {

    listen       80 default backlog=32768;

    server_name  localhost;

    index index.html index.htm index.jsp default.jsp index.do default.do;

    root  /usr/local/nginx/html;

     if (-d $request_filename)

    {

        rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

    }

    location ~ \.(jsp|jspx|do|json)(.*)$ {                                                                                                                        

        proxy_set_header Host  $host;                                                                                                                          

        proxy_set_header X-Forwarded-For  $remote_addr;                                                                                                        

        proxy_pass http://jkda_server;                                                                                                                         

    }                                                                                                                                                          

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|htm)$

    {

        expires      30d;

    }

    location ~ .*\.(css)?$

    {

        expires      7d;

    }

    #    access_log  off;

    }

0
皮总
皮总
我在想,少开一点 tomcat 然后每个 tomcat 多分配一些内存有没好处呢
0
justin
justin
 最开始是用Apache+tomcat 分的少内存也大,高峰无无访问,估计应用写的应用也有问题还找不出原因,操作的动态请求响应也很快,用HttpWatch监控一班响应都在0.3S以下。
0
o
olive
我们也出现这种问题了,楼上的问题解决了没。。。
返回顶部
顶部