2012-05-25 97 views
0

我有幾個nginx web服務器作爲反向代理。我發現在一些服務器(不是所有的服務器)中的活動連接(包括讀取寫入和等待,從http_stub_status模塊中看到)正在從3000到5000,10000 .... 10k不斷增長 。 .. 50K,即使在深夜也不會減少。nginx的活動連接保持增長

在同一時間,我得到了一個更加可靠的數量從netstat的

netstat -nap | grep 80 | grep EST | wc -l 
2743 

的keepalive_timeout是10秒

工作進程都開始在同一時間

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 

我發現類似的問題在:

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

,但似乎不與我相同

有在error.log中沒有相關的錯誤

系統

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 

nginx的版本:

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 

模塊是:

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/ 

所有補丁都應用於nginx src代碼。

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; 
    } 
} 

} 

回答