Сведения о вопросе

PIRLO

08:27, 11th August, 2020

Настройка nginx для отдачи популярных файлов с SSD

Просмотров: 410   Ответов: 5

Друзья, ломаю голову над несколько не тривиальной задачей.
Суть: есть файлообменник. Storage-серверы укомплектованы SSD-дисками. Есть план складывать на SSD часто запрашиваемые файлы и отдавать их с них. Подсчетом популярности файлов, копированием и удалением уже не популярных (размеры SSD, увы, ограничены) будет заниматься скрипт в автоматическом режиме.

Проблема — если скрипт сработал и удалил файл в момент того, когда его кто-то скачивает, соединение оборвется с ошибкой.

Наведите на мысль, как реализовать механизм временных локов активных файлов на удаление, либо, может быть, есть какой-то магический способ заставить nginx искать файл в другом location'е (с HDD) при его исчезновении из текущего места? Последнее, конечно, звучит больше как сказка, но мало ли…



  Сведения об ответе

prince

19:24, 25th August, 2020

>Проблема — если скрипт сработал и удалил файл в момент того, когда его кто-то скачивает, соединение оборвется с ошибкой.

Не оборвется так как в Linux файл будет обращаться через открытый дескриптор файла. Легко проверить, если поставить слушать файл и потом его удалить (речь про ext системы), так вот плеер будет спокойно играть дальше трек, и только при повторном обращении выдаст ошибку о том что файл не найден.


  Сведения об ответе

crush

17:10, 26th August, 2020

Не совсем красивый вариант, зато будет быстрым и автономным.
Суть в том, что нужно два nginx.
nginx1 делает proxy_cache и складывает файлики на ssd по мере необходимости
nginx2 отдает файлики первому с hdd

После наполнения кэша у вас постоянно будут наиболее актуальные фаила в кэше, менее актуальные будут из него временами вылетать.

Для вашего варианта, можно сделать с try files и rewrite на тот локейшн который отдает с hdd


  Сведения об ответе

прога

00:13, 2nd August, 2020

Рекомендую по вопросам настройки nginx обращаться непосредственно в официальный список рассылки. Там максимальная концентрация весьма компетентных в данном вопросе людей, в т.ч. и сам автор часто отвечает. Получите максимально верный вариант.


  Сведения об ответе

P_S_S

23:41, 11th August, 2020

Вы уверены, что соединение оборвется с ошибкой? Если Линукс, то он открытые файлы (например, видео) после удаления продолжают работать (проигрываться, до закрытия файла, видимо), насколько помню. Так что, возможно, проблемы просто нет.


  Сведения об ответе

LAST

06:37, 27th August, 2020

nginc.conf
Включам кеш
proxy_cache_path /mnt/tmp/cash levels=1:2 keys_zone=cache:1m max_size=200M;
proxy_temp_path /mnt/tmp 1 2;
соответственно прописываешь в локейшене что и как кешировать


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться