Периодические проблемы под нагрузкой
waster
nginx-forum на forum.nginx.org
Ср Фев 20 12:08:13 UTC 2019
Добрый день,
Для раздачи HLS используется схема из двух серверов cache-origin, ts-чанки
отдаются cache, а все запросы на m3u8-плейлисты проксируются на origin. На
cache настроено проксирование с keepalive.
Кусок конфига cache:
--------------------------------------------------------------------------------------------------
limit_req_zone $binary_remote_addr zone=hlslimit:10m rate=100r/s;
proxy_http_version 1.1;
upstream hls01 {
server X.X.X.X:80 fail_timeout=3s max_fails=3;
keepalive 500;
keepalive_timeout 10;
keepalive_requests 100000;
}
...
location ~* \.ts$ {
proxy_set_header Host "XXX.XXXXXXX.ru";
proxy_set_header X-Cache-Host $host;
proxy_buffer_size 16k;
proxy_buffers 32 16k;
proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache e_v;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid any 1m;
proxy_cache_use_stale updating;
proxy_cache_lock on;
proxy_pass http://hls01;
add_header X-Proxy-Cache $upstream_cache_status;
}
...
location ~* \.m3u8$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "";
proxy_set_header Host "XXX.XXXXXX.ru";
proxy_set_header X-Cache-Host $host;
proxy_cache off;
expires -1;
limit_req zone=hlslimit burst=50 nodelay;
proxy_pass http://hls01;
}
--------------------------------------------------------------------------------------------------
Кусок конфига origin:
--------------------------------------------------------------------------------------------------
http {
...
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
...
}
--------------------------------------------------------------------------------------------------
У cache 10G интерфейс, sysctl настроен.
Под нагрузкой периодически наблюдается такая картина:
https://imgur.com/a/B3fOWg7
По понятным причинам также резко подпрыгивает кол-во открытых файловых
дескрипторов.
В error.log на cache в эти моменты иногда (но не всегда) видны несколько
сообщений:
--------------------------------------------------------------------------------------------------
*137407049 upstream timed out (110: Connection timed out) while connecting
to upstream...
...
*143796692 limiting requests, excess: 50.400 by zone "hlslimit"...
--------------------------------------------------------------------------------------------------
В error.log на origin вообще тишина.
Подскажите, пожуалуйста, в чем может быть проблема? Только лишь в иногда
нестабильной сетевой связности между cache и origin, всплесками запросов?
Уже множество параметров было перенастроено как на origin, так и на cache,
но успехов в повышении стабильности это не дало.
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,283083,283083#msg-283083
Подробная информация о списке рассылки nginx-ru