Загадочным образом пробивается кэш

Иван nginx на kinetiksoft.com
Вс Июл 10 08:50:46 UTC 2016


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

Есть группа серверов-эджкй проксирующих видео-файлы HLS (*.ts) на ориджины. 
Трафик до ориджинов должен быть максимально снижен, то есть каждый видеофайл 
должен проксироваться единожды, кешируясь на эджах.

На всех эджах группы все в порядке, а на одном, ничем явным от других не 
отличающихся кэш пробивается и каждый видео файл запрашивается по десятку 
раз, 
трафик возрастает в пять раз. Конфигурация на эджах не различается - эджи 
раскатываются из одной конфигурации ансиблем. Различаются только ипы.

Ситуация исправляется сразу после перезагрузки этого эджа и вновь ломается через 
несколько дней беспрерывной работы. Выключить nginx на 10 минут на эдже не 
помогает.

Запросы вот такие:
GET /place/stream/cam4-timestamp.ts - все без $args

прокси-зона задается вот так:
proxy_cache_path /var/cache/nginx/edge_video keys_zone=v_e_v:3m inactive=3m 
max_size=1g;
location на эджах выглядит вот так:
location /place/stream {
        #чанки
                proxy_ssl_name origin.domain.com;

                include proxy_headers.inc;
                proxy_set_header host origin.domain.com;
                proxy_buffer_size 16k;
                proxy_buffers 32 16k;

                proxy_cache v_e_v;
                proxy_cache_valid any 1m;

                proxy_cache_use_stale updating;
                proxy_cache_key "$uri$is_args$args";
                proxy_cache_lock on;

                proxy_pass https://o-place/place/video;
}

апстрим вот такой:
upstream o-place {
        server ip4_1:443 fail_timeout=60 max_fails=3 weight=3;
        server ip6_1:443 fail_timeout=60 max_fails=3 weight=3;
        server ip4_2:443 fail_timeout=60 max_fails=3 weight=1;
        server ip6_2:443 fail_timeout=60 max_fails=3 weight=1;
        server ip4_3:443 fail_timeout=60 max_fails=3 backup;
        server ip6_3:443 fail_timeout=60 max_fails=3 backup;
        keepalive 500;
}

Кипалайвы задали такой большой, так как памяти много, а маленький кипалайв 
давал очень большой rps до ориджинов.

nginx пробовал 1.10.1 и 1.11.2 из репозиториев дебиана на nginx.org.
nginx version: nginx/1.11.2
built by gcc 4.9.2 (Debian 4.9.2-10) 
built with OpenSSL 1.0.1k 8 Jan 2015 (running with OpenSSL 1.0.1t  3 May 2016)
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-http_ssl_module --with-http_realip_module --with-
http_addition_module --with-http_sub_module --with-http_dav_module --with-
http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-
http_gzip_static_module --with-http_random_index_module --with-
http_secure_link_module --with-http_stub_status_module --with-
http_auth_request_module --with-http_xslt_module=dynamic --with-
http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-
http_perl_module=dynamic --add-dynamic-module=debian/extra/njs-ef2b708510b1/nginx 
--with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail 
--with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-g -
O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-
D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,--as-needed'

С уважением, Иван Прокудин.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20160710/c4cb5f30/attachment.html>


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