nginx и статический hls, странные падения скорости

Андрей Василишин a.vasilishin на kpi.ua
Вс Янв 8 16:19:47 UTC 2017


Есть странная проблема, нгинкс после определенного времени начинает
медленно отдавать сегменты hls, которые являются статикой на диске
(4хSSD Kingston SH103S3 LVM  ext4)  при этом резко возрастает writing и
падает waiting.

https://i.gyazo.com/b4f7745c2fdf0ef63614684fa91177af.png


В логах в это время пусто, при релоаде нгинкс, все снова стает в порядке
до определенного момента, который может быть как через 5 минут, так и
через пару часов.
Что это может быть?

# nginx -V
nginx version: nginx/1.11.8
built by gcc 4.7.2 (Debian 4.7.2-5)
built 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-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 -fstack-protector --param=ssp-buffer-size=4
-Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2'
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed'


user                    stream;
worker_processes        32;
worker_rlimit_nofile 65535;
error_log               /var/log/nginx/error.log warn;
pid                     /var/run/nginx.pid;

events {
        use                     epoll;
        worker_connections  65535;
        multi_accept            on;
}

http {
        include                 /etc/nginx/mime.types;
        default_type            application/octet-stream;
        server_tokens           off;
        access_log              off;
        sendfile                off;
        tcp_nopush              on;
        tcp_nodelay             on;
        keepalive_timeout       30;
        reset_timedout_connection on;

        output_buffers          1 1M;

        log_format IP '[$time_local] $http_referer $request $remote_addr';

        upstream php {
                server 127.0.0.1:9000;
        }

        server {
                listen                  80;
                server_name             site.com;
                charset                 utf8;
                access_log              off;
                root                    /home/stream/www;
                rewrite                 ^/stream/(\d+)$
/player/stream.php?id=$1 last;

                location ~ \.php$ {
                                fastcgi_index index.php;
                                fastcgi_pass php;
                                include fastcgi_params;
                                fastcgi_read_timeout 300;
                }

                valid_referers none blocked server_names site.tv
site.net 1.1.1.1;

                location ~* \.(m3u8|ts)$ {
                        if ($invalid_referer) {
                                return 403;
                                access_log /var/log/nginx/referer.log IP;
                        }
                sendfile on;
                sendfile_max_chunk 512k;
                output_buffers  1 128k;
                }

                location = /nginx_status {
                        stub_status on;
                }
        }
}


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