active connections of nginx continually increase

tntzwz nginx-forum at nginx.us
Fri May 25 15:58:22 UTC 2012


I have several nginx web servers as reverse proxy. 

I found out that  the active connections(including reading writing and
waiting , seen from  http_stub_status module)  in some of the
servers(not all of them) are keep growing
from 3000 to 5000, 10000 .... 10k ... 50k, and never reduce even in the
late night.

at the same time , I got a more reliable number from netstat
    netstat -nap | grep 80 | grep EST  | wc -l
    2743

the keepalive_timeout is 10 sec

the worker processes are all started at the same time

    5265 nginx: master process         6-19:18:55 May19
    24498  \_ nginx: worker process         59:34 19:16
    24499  \_ nginx: worker process         59:34 19:16
    24500  \_ nginx: worker process         59:34 19:16
    24501  \_ nginx: worker process         59:34 19:16
    24502  \_ nginx: cache manager pr       59:34 19:16


I've found a similar problem at:

http://markmail.org/search/?q=Upload+module+%2B+PHP+causes+active+connections+to+continually#query:Upload%20module%20%2B%20PHP%20causes%20active%20connections%20to%20continually+page:1+mid:fdgyk6v32lnvaxul+state:results

but seems not the same with me. There's  also no related error in
error.log

the system is  

    cat /etc/issue
    CentOS release 5.3 (Final)
    Kernel \r on an \m

    uname -a
    Linux 2.6.18-128.el5xen #1 SMP Wed Jan 21 11:12:42 EST 2009 x86_64
x86_64 x86_64 GNU/Linux

the nginx version:

    nginx -V
    nginx version: Nginx/1.0.14
    built by gcc 4.1.2 20080704 (Red Hat 4.1.2-44)
    TLS SNI support disabled
    configure arguments: --prefix=/home/web/nginx/ --user=nobody
--group=nobody 
    --with-    http_ssl_module --with-http_sub_module
--with-http_dav_module 
    --with-http_flv_module --    with-http_gzip_static_module 
    --with-http_stub_status_module
--http-proxy-temp-path=/home/web/nginx/data/proxy 
    --http-fastcgi-temp-path=/home/web/nginx/data/fastcgi 
    --http-client-body-temp-path=/home/web/nginx/data/client
--with-pcre=../pcre-7.9 
    --add-module=../ngx_http_upstream_keepalive-d7643c291ef0 
    --add-module=../hmux/ --add-module=../nginx-sticky-module-1.0/ 
    --with-google_perftools_module
--add-module=../nginx_upstream_check_module-660183a

the modules are:

    1: for cookie sticky
    nginx-sticky-module.googlecode.com
    2: hmux module for resin
    code.google.com/p/nginx-hmux-module/
    3: upstream check module
    github.com/yaoweibin/nginx_upstream_check_module
    4: upstream keepalive
    mdounin.ru/hg/ngx_http_upstream_keepalive/

all patches are applied to nginx src code.

nginx.conf:
===========================================

    user  nobody;
    worker_processes  4;
    worker_cpu_affinity 0001 0010 0100 1000;
    google_perftools_profiles /home/web/nginx/tcmalloc/tc;

    events {
        worker_connections 51200;
        use epoll;
        epoll_events 4096;
        multi_accept on;
        accept_mutex off;   }

    http {
        include       mime.types;
        default_type  application/octet-stream;

        log_format  main  '$remote_addr - $remote_user [$time_local] '
                      '$status $body_bytes_sent ';
    

        access_log  logs/access.log  main;

        sendfile        on;
        keepalive_timeout  10;

        server_tokens off;

        gzip  on;
        gzip_types  text/plain text/css application/x-javascript
text/xml application/json application/xml application/xml+rss
text/javascript;
        gzip_vary on;

        server_names_hash_max_size 4096;
        proxy_buffer_size   64k;
        proxy_buffers       8 64k;
        proxy_busy_buffers_size     64k;
        client_header_buffer_size 64k;
        large_client_header_buffers 4 64k;
        proxy_headers_hash_max_size 1024;
        proxy_headers_hash_bucket_size 128;
        client_max_body_size 25m;

    upstream backend{
        check interval=5000 fall=3 rise=2 timeout=2000
default_down=false type=tcp;
        keepalive 1024;
        server server1:80;
        server server2:80;
     }
    server {
        listen       80;
        server_name  xxx;


        location / {
             proxy_pass http://backend;
        }
        
        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
            root   html;
        }
    }  

    }

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,226838,226838#msg-226838



More information about the nginx mailing list