Есть сервер на ubuntu Он стоит как проксирующий кеш сервер для основного сервера где лежат в основном видео файлы для раздачи.
Вот конфиг прокси
Конфиг
proxy_cache_path /var/www/html/cache levels=1:2:2 keys_zone=cachessd:100m max_size=400G inactive=12h use_temp_path=off;
proxy_cache_key "$uri$slice_range";
limit_speed_zone speed_zone_one $binary_remote_addr 10m;
server {
listen *:80;
root /var/www/html;
location ~* \.mp4$ {
proxy_pass
http://10.0.0.1:80;
proxy_set_header Host d3.kinohit.uz;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
limit_speed speed_zone_one 700k;
slice 5m;
proxy_set_header Range $slice_range;
proxy_cache_valid 200 206 1d;
proxy_cache cachessd;
proxy_cache_key $uri$slice_range;
output_buffers 1 64k;
directio 512;
aio threads;
}
}
Данный сервер соеденяется через 1gbit ethernet с файловым сервером напрямую в подсети у второго ip 10.0.0.1
Характеристика сервера: Core i3 2 ядра, ОЗУ 16GB и 2 ssd по 480gb на одной система на другой данный кеш
у данного сервера двух портовая сетевая карта Tp-Link один порт для локального соеденения с файловым серверов а второй для выхода в сети там канал на 800мбит
Когда на сервере нет народа все работает отлично и воспроизведение видео начинается в течении 2-3 секунд, видео не большие средний размер 400мб
Как видите скорость для пользователя с помощью nginx модуля limit_speed.
Как только на сервер заходит хотя бы 100 человек, начало видео задерживается до 10 секунд хотя если смотреть через ATOP то нагрузки на ssd не более 15% а нагрузка на HDD диска на файловом сервере не более 5% почему так может замедляться скорость при таком маленьком количестве людей, никаких ошибок в nginx появляется CPU при 100 человек грузится не более чем на 5-10% а озу вообще свободная. В том числе если начинается перемотка видео то это тоже задерживается секунд на 5 и по началу может пару раз зависнуть на 1-2 секунды.
Использовал разные варианты конфига .
Конфиг nginx.conf
user www-data;
worker_processes 8;
pid /run/nginx.pid;
worker_rlimit_nofile 200000 ;
events {
worker_connections 3000;
use epoll;
accept_mutex off;
multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10s;
types_hash_max_size 1024;
# server_tokens off;
# open_file_cache max=200000 inactive=1d;
# open_file_cache_valid 1d;
# open_file_cache_min_uses 2;
# open_file_cache_errors on;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
#access_log /var/log/nginx/access.log;
#error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip off;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rs$
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
В чем может быть проблема? Я думал по началу что просто слабоватый сервер но посмотрев atop стало ясно что и половина возможного не используется. А сам файловый сервер отдает mp4 стандарно , скорость не ограничивает, aio on,output_buffers 1 1m и все там больше ничего и не сделано, причем если запускать видео минуя кеш сервер то есть напрямую через файловый сервер то видео загружается моментально и не подвисает.