Я приобрел облачный сервер на digitalocean.com с 2 ГБ оперативной памяти и процессором DUAL CORE. Я хочу настроить службу видеопрокси, то есть проксировать видео на YouTube.
Я установил сервер NGINX + PHP-FPM и брандмауэр UFW. Но когда стримят более 10-20 пользователей, сайт замедляется или становится полностью недоступным.
Ниже приведены конфигурации:
(КОНФИГУРАЦИЯ NGINX)
user www-data;
worker_processes 2;
pid /var/run/nginx.pid;
events {
worker_connections 19000;
multi_accept on;
}
worker_rlimit_nofile 20000;
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log off;
error_log /var/log/nginx/error.log crit;
##
# Gzip Settings
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
(КОНФИГУРАЦИЯ PHP-FPM)
pm = static
pmm.max_children=1000
pm.process_idle_timeout = 10s
Я также пробовал динамические конфигурации и конфигурации по требованию, но без улучшений.
pm = dynamic
pm.max_children = 1000
pm.start_servers=2
pm.min_spare_servers = 2
pm.max_spare_servers = 6
Пожалуйста, помогите в настройке этого сервера.
Как вы выполняете прокси?
Предоставленных вами сведений недостаточно для определения узкого места. Вы не предоставили ничего относительно того, что, как и кто выполняет проксирование, и именно в этом заключается основная проблема.
Моя гипотеза состоит в том, что ваше проксирующее приложение сохраняет видео на диск, и вы можете исчерпать все свои дисковые ресурсы ввода-вывода. Отсутствие ответа всего сервера - хороший признак истощения дискового ввода-вывода.
Хотя nginx - отличный инструмент, который я настоятельно рекомендую, для вашего конкретного случая использования вам может быть лучше лак. Предлагаю написать всю логику проксирования в лаке; Varnish cache наиболее эффективно использует ваши 2 ГБ оперативной памяти.