connect()失败(110:连接超时),同时连接到上游Nginx Tomcat

时间:2015-03-04 10:21:39

标签: tomcat nginx

我们设置了nginx(nginx / 1.4.6(Ubuntu))与ubuntu上的tomcat服务器(7.0.39)通信(同一物理服务器上的5个tomcat实例),一切正常,直到我们得到15000个请求/分钟,我们开始面临问题每当我们在nginx服务器上突然大于@ 20000 - 25000 req /分钟几秒钟时,nginx错误日志得到" connect()失败(110:连接超时),同时连接到上游"。

我们观察到nginx错误日志中的错误是针对所有5个tomcat实例一次性而不是仅针对其中一个 - 因此,如果针对套接字或打开文件或突然达到限制,则会引发一个问题在服务器级别的其他东西?

#########
 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) 32063  
max locked memory       (kbytes, -l) 64  
max memory size         (kbytes, -m) unlimited  
open files                      (-n) 65536  
pipe size            (512 bytes, -p) 8  
POSIX message queues     (bytes, -q) 819200  
real-time priority              (-r) 0   
stack size              (kbytes, -s) 8192  
cpu time               (seconds, -t) unlimited  
max user processes              (-u) 32063  
virtual memory          (kbytes, -v) unlimited  
file locks                      (-x) unlimited  

#########

我想知道

上是否有任何设置
  1. 限制nginx或tomcat服务器的套接字或文件句柄。我们已经更改了limits.conf中的永久设置,如上所示。
  2. 是否有任何网络设置限制从nginx服务器到tomcat服务器的并发请求数?
  3. tomcat server.xml配置了以下参数 - maxThreads =" 500" minSpareThreads =" 150" acceptCount =" 250" acceptorThreadCount =" 2"
  4. 我们有足够的空闲数据库连接,因此似乎不是问题。 Tomcat不会为所有请求转到DB
  5. tomcat中的大多数线程都处于以下状态

    " HTTP的生物8181-EXEC-8" daemon prio = 10 tid = 0x00007f38b8006800 nid = 0x590e等待条件[0x00007f39490ac000] java.lang.Thread.State:在sun.misc.Unsafe.park(本地方法)等待的停止(停放)< 0x00000007811f9908> (java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject)

  6. Nginx设置如下:         #############

            worker_processes 4;
            pid /run/nginx.pid;
            worker_rlimit_nofile 16384;
    
            events {
                    worker_connections 10000;
                    # multi_accept on;
            }
    
            http {
    
                    proxy_connect_timeout 300s;
                    proxy_send_timeout   600s;
                    proxy_read_timeout   600s;
                    send_timeout 600s;
    
        #############
    

0 个答案:

没有答案