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