Re: SSL сертификаты
Maxim Dounin
mdounin на mdounin.ru
Пн Июл 22 18:12:36 UTC 2019
Hello!
On Mon, Jul 22, 2019 at 01:12:38PM -0400, rihad wrote:
> И еще параллельно такой вопрос возник: у нас крутящиеся диски на одном из
> серверов, и proxy_cache_path levels=1:2 все это приводит к тому, что в
> каждой директории где-то 3-4 тысячи файлов
3-4 тысячи файлов на каталог - это плюс-минус нормально.
> (я так понимаю поменять на 2:2 + reload уже нельзя?).
Да, поменять levels можно только создав новый кэш, перекладывать
из одной структуры в другую nginx не умеет. Если попытаться
поменять levels при reload'е - nginx выругается и откажется
загружать новую конфигурацию. Если остановить и запустить заново -
сотрёт содержимое, не соответствующее заданным levels.
> cache_loader при старте работает довольно долго, но не
> грузит. Он очень мало CPU времени тратит или дискового, за сутки работы
> сейчас он потратил 0:04.37 (согласно ps) это 4 минуты, но он не
> заканчивается. lsof показывает что он очень много времени проводит на каждой
> из директорий кэша. А их тысячи. Надеюсь он не читает весь файл
> (преимущественно картинки), а только его начало с заголовками? ))
Сейчас cache loader вообще не читает файлы, только каталоги.
Чтобы работал побыстрее - можно поиграться с параметрами
loader_files, loader_threshold и loader_sleep, подробности тут:
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_path
Алгоритм загрузки кэша такой, чтобы не создавать излишней нагрузки
на диски, и соответственно чтобы сервис не деградировал в процессе
загрузки кэша.
При параметрах по умолчанию - loader_files 100, loader_sleep 50
миллисекунд - и бесконечно быстрых дисках - загрузка кэша с 16
миллионами файлов (16 x 16 x 16 x 4000 = 16384000) должна занимать
чуть больше трёх часов (50ms * 16384000 / 100 = 8192000ms =
8192s).
Если загрузка занимает больше - значит, срабатывает
loader_threshold, и loader спит чаще, чем раз в 100 файлов. Для
вращающихся дисков это нормально. Но это и в свою очередь означает,
что если для ускорения загрузки начать увеличивать loader_files и
loader_threshold, а равно уменьшать loader_sleep - нагрузка на
диски станет больше, и кэш может начать тормозить.
> Может ли
> его такая тормознутость привести к повторному запросу ресурса из источника и
> повторному кэшированию? Что делает nginx когда в кэше пока объекта нет,
> пытается ли сам к диску обратиться?
Если загрузка кэша не завершена - nginx при обращении к элементу
кэша, которого ещё нет в памяти, явно проверяет, есть ли
соответствующий файл на диске. То есть к лишним обращениям на
бэкенд это не приводит.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru