ПРОЕКТЫ 


  АРХИВ 


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]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re[2]: ngx_http_limit_conn_module: жучок п ри ограничении соединен ий?
  • From: Дмитрий Дедюхин <dedukhin@xxxxxxx>
  • Date: Sat, 24 Dec 2011 10:48:47 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail; h=Message-Id:Content-Transfer-Encoding:Content-Type:Reply-To:In-Reply-To:References:Date:Mime-Version:Subject:To:From; bh=PJQ+nhjlfFJx+AyWdwRksVUEcDFyVo3xTZOdXQLN9hI=; b=LEyChAPIoFvoVC0Tj0hxS0HOqal3jxJPMshN5ZSrkLo3ddBraVI8YK50Ayw7UMEM5rXBS5Ach+NI4kPOSHmmoNejABQkKLmD+pUg5HFWot55K3DNStF5GKonwUDmmN3k;
  • In-reply-to: <20111223133348.GO67687@xxxxxxxxxx>
  • References: <4EF41CBD.4000508@xxxxxxx> <4EF47670.8010409@xxxxxxx> <20111223133348.GO67687@xxxxxxxxxx>

23 декабря 2011, 17:34 от Maxim Dounin <mdounin@xxxxxxxxxx>:
> Hello!
> 
> On Fri, Dec 23, 2011 at 04:39:12PM +0400, Dmitry Dedukhin wrote:
> 
> > 23.12.2011 16:23, Maxim Dounin пишет:
> > >Hello!
> > >
> > >On Fri, Dec 23, 2011 at 10:16:29AM +0400, Dmitry Dedukhin wrote:
> > >
> > >>Добрый день.
> > >>
> > >>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
> > >grep -f '[alert]' /path/to/error/logs
> 
> s/-f/-F/
> 
> > >Скорее всего за прошедший месяц рабочие процессы падали и/или их
> > >некорректно убивали, в результате в зоне не были уменьшены
> > >счётчики соединений.
> > >
> > >Очистить счётчики можно с помощью процедуры обновления
> > >исполняемого файла на лету.
> >
> > В логе куча записей вида:
> >
> > 2011/12/23 00:00:41 [error] 2734#0: *22996338 limiting connections
> > by zone "dnl" while sending to client ...
> >
> > может что-то конкретное надо искать?
> 
> Нужно искать alert'ы.  Если я прав - должно быть про 'worker
> process N exited on signal M'.
> 
> > Кстати, почему директива limit_conn_log_level warn; не подавляет эти
> > записи в еррор-логе? Или я не так понял её?
> >
> > error_log /path/to/error.log error;
> > server {
> >   ...
> >   limit_conn_log_level warn;
> >   location /d2/ {
> >     ...
> >     limit_conn  dnl 3;
> >     ...
> >   }
> > }
> 
> Это ошибка, директива limit_conn_log_level сейчас работает только
> если указана на уровне http или вместе с директивой limit_conn.
> Где-то у Валентина есть патч, в ближайшее время закоммитим.
> 

Прошу прощения, в первый раз не заметил, что грепал не то, что нужно.
Максим, похоже вы правы, за декабрь в логе этого сервера есть 33 сообщения вида:
2011/12/23 16:30:12 [alert] 11692#0: worker process 9711 exited on signal 11
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.