ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ngx_http_limit_conn_module: жучок при о граничении соединений?


  • To: nginx-ru@xxxxxxxxx
  • Subject: ngx_http_limit_conn_module: жучок при о граничении соединений?
  • From: Dmitry Dedukhin <dedukhin@xxxxxxx>
  • Date: Fri, 23 Dec 2011 10:16:29 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail; h=Content-Transfer-Encoding:Content-Type:Subject:To:MIME-Version:From:Date:Message-ID; bh=8k5F5Sj9NtgAl/KxeV+CYnnkW5QiODkgd4jCHFGFumo=; b=siUkB6AXhxvIBpkIyWLmgzxcbCGJEZOTRcS3P7Rq+UhT0em9Q7F+ydJwpHTP6c0PO1L4DIdQ6TFrLtAJXfZ+C7/nrLoDAV4Pzekh6+Xs+LyPqq++T6S5elvh09hP4p/4;

Добрый день.

CentOS 5.

/usr/sbin/nginx -V

nginx: nginx version: nginx/1.0.9
nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-46)
nginx: TLS SNI support disabled
nginx: configure arguments: --prefix= --with-poll_module --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin --error-log-path=/var/log/nginx/nginx.error.log --http-log-path=/var/log/nginx/nginx.log --http-client-body-temp-path=/var/spool/nginx/tmp/client --http-proxy-temp-path=/var/spool/nginx/tmp/proxy --http-fastcgi-temp-path=/var/spool/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid --user=mail --group=mail --with-http_ssl_module --with-select_module --with-poll_module --with-http_ssl_module --with-md5=YES --with-http_realip_module --with-http_stub_status_module --with-http_sub_module --with-http_addition_module --with-http_dav_module --add-module=./vkholodkov-nginx-upload-module-8d271b1 --add-module=./evanmiller-mod_zip-2657fc8 --add-module=./vkholodkov-nginx-eval-module-125fa2e

Кусочек конфига:

limit_zone   dnl  $binary_remote_addr  5m;
location /d2/ {
    ...
    limit_conn  dnl 3;
    ...
}

Аптайм nginx'а около месяца:

Active connections: 1728
server accepts handled requests
 12730717 12730717 12684554
Reading: 28 Writing: 1700 Waiting: 0

Несмотря на заданное в конфиге ограничение в 3 соединения, по крайней мере для одного IP-адреса nginx позволяет только 1 соединение, если больше - возвращает 503 ошибку. Вполне вероятно, что неверное ограничение может действовать и на ряд других IP-адресов, в то время как для большей части ограничение работает корректно.

С чем это может быть связано и куда копать?
Может ли это быть связано с коллизиями crc32 ?
Может ли при каких-то условиях "залипнуть" счетчик lz->conn ? Например, не произошел вызов функции ngx_http_limit_zone_cleanup и, соответственно, декрементирование счетчика, либо наоборот, произошел "лишний" вызов ngx_http_limit_zone_cleanup и счетчик стал равен максимальному u_short ?

PS: nginx на этом сервере пока не рестартован, поэтому могу что-то посмотреть, прицепившись через gdb

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.