Hello!

On Tue, Jul 23, 2019 at 02:40:59AM -0400, rihad wrote:

> > Если загрузка кэша не завершена - nginx при обращении к элементу
> > кэша, которого ещё нет в памяти, явно проверяет, есть ли
> > соответствующий файл на диске. То есть к лишним обращениям на
> > бэкенд это не приводит.
> 
> Глядя на объемы памяти RSS, а также на текущий обрабатываемый каталог из
> вывода lsof,  у меня такое впечатление что при SIGHUP nginx и запуске
> второго cache loader (первый при этом не умирает, убиваю его через TERM
> вручную) уже прочитанные объекты из shared memory не стираются, т.е. он
> просто продолжает откуда его прервали. Так ли это? Спасибо.

Вообще если cache loader уже работает с кэшом, то новый cache loader 
при релоаде не запускается.  Может запуститься, если кэшей больше 
одного - и начнёт загружать другие кэши.  Каждый кэш загружается 
единожды, так что наличие больее чем одного cache loader'а - 
влияет разве что на параллелизм процесса.

Уже загруженные элементы из памяти, естественно, не стираются, но 
продолжать откуда прервали cache loader не умеет, и в случае чего 
будет обходить каталог кэша заново.  Если кэшей много, и какие-то 
полностью загружены - они загружаться заново не будут.

Но вообще убивать старый cache loader - это в любом случае плохая 
идея, с некоторой вероятностью не повезёт (практически 
гарантированно, если не успеть в первую минуту после запуска 
нового cache loader'а), и кэш, с которым он работал, так и 
останется незагруженным.

-- 
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить