Необъяснимый 503 при limit_conn

Иван nginx на kinetiksoft.com
Вт Май 22 16:45:35 UTC 2018


Здравствуйте!


Периодически nginx начинает отдавать 503 там где не должен. А именно.
Есть следующая конфигурация limit_conn:

geo $binaddrnotownproxy {
        default $binary_remote_addr;
        51.ipv4/32 "";
        2001:ipv6::/56 "";
        10.ipv4/32 "";
}


limit_conn_zone $binaddrnotownproxy zone=dynamic:2000m;


2000m взял уже от безысходности, так как думал, что переполняется
область памяти.


Такая схема используется, чтоб исключить некоторые адреса из лимитирования.


И есть обычный, проксирующий через proxy_pass локейшен, в котором задано

limit_conn dynamic 10;

Регулярно, хоть и достаточно редко в ответ на запросы в этот локейшен
проскакивает 503 тогда, когда оно совсем возникать не должно. Например,
вот следующий лог. В этот локейшен ходит заббикс (фактически curl). Он
тоже иногда получает 503. Я вырезал из лога все запросы с его IP.


> 2a01:IPv6|-|22/May/2018:06:35:15 +0300|GET /
> HTTP/1.1|200|117926|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.109
> 2a01:IPv6|-|22/May/2018:06:36:15 +0300|GET /
> HTTP/1.1|200|117926|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.088
> 2a01:IPv6|-|22/May/2018:06:37:16 +0300|GET /
> HTTP/1.1|200|117921|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.096
> 2a01:IPv6|-|22/May/2018:06:38:16 +0300|GET /
> HTTP/1.1|200|117922|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.105
> 2a01:IPv6|-|22/May/2018:06:39:16 +0300|GET /
> HTTP/1.1|200|117922|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.136
> 2a01:IPv6|-|22/May/2018:06:40:16 +0300|GET /
> HTTP/1.1|200|117917|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.100
> 2a01:IPv6|-|22/May/2018:06:41:17 +0300|GET /
> HTTP/1.1|200|117917|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.096
> 2a01:IPv6|-|22/May/2018:06:42:17 +0300|GET /
> HTTP/1.1|200|117921|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.119
> 2a01:IPv6|-|22/May/2018:06:43:17 +0300|GET /
> HTTP/1.1|200|117913|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.118
> 2a01:IPv6|-|22/May/2018:06:44:17 +0300|GET /
> HTTP/1.1|200|117904|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.093
> 2a01:IPv6|-|22/May/2018:06:45:17 +0300|GET /
> HTTP/1.1|200|117908|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.131
> 2a01:IPv6|-|22/May/2018:06:46:18 +0300|GET /
> HTTP/1.1|200|117902|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.148
> 2a01:IPv6|-|22/May/2018:06:47:18 +0300|GET /
> HTTP/1.1|200|117902|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.096
> 2a01:IPv6|-|22/May/2018:06:48:19 +0300|GET /
> HTTP/1.1|200|117901|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.093
> 2a01:IPv6|-|22/May/2018:06:49:19 +0300|GET /
> HTTP/1.1|200|117916|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.104
> 2a01:IPv6|-|22/May/2018:07:15:25 +0300|GET /
> HTTP/1.1|200|117907|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT
> 6.1; Trident/6.0)|0.095
> 2a01:IPv6|-|22/May/2018:07:16:25 +0300|GET /
> HTTP/1.1|503|608|-|Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1;
> Trident/6.0)|0.000

Обращаю внимание, что идет серия быстрых запросов раз в минуту, на
которые возвращается 200, а потом очереднй внезапно получает 503.
Проясните, пожалуйста, кто-нибудь ситуацию. Debian Stretch, nginx из
официальных репозиториев.

# nginx -V
nginx version: nginx/1.14.0
built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
built with OpenSSL 1.1.0f  25 May 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
--modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx
--group=nginx --with-compat --with-file-aio --with-threads
--with-http_addition_module --with-http_auth_request_module
--with-http_dav_module --with-http_flv_module --with-http_gunzip_module
--with-http_gzip_static_module --with-http_mp4_module
--with-http_random_index_module --with-http_realip_module
--with-http_secure_link_module --with-http_slice_module
--with-http_ssl_module --with-http_stub_status_module
--with-http_sub_module --with-http_v2_module --with-mail
--with-mail_ssl_module --with-stream --with-stream_realip_module
--with-stream_ssl_module --with-stream_ssl_preread_module
--with-cc-opt='-g -O2
-fdebug-prefix-map=/data/builder/debuild/nginx-1.14.0/debian/debuild-base/nginx-1.14.0=.
-specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong
-Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC'
--with-ld-opt='-specs=/usr/share/dpkg/no-pie-link.specs -Wl,-z,relro
-Wl,-z,now -Wl,--as-needed -pie'


С уважением, Иван.



Подробная информация о списке рассылки nginx-ru