Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ngx_http_limit_conn_module: жучок пр и ограничении соединени й?
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.
Где-то у Валентина есть патч, в ближайшее время закоммитим.
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|