Hello! On Fri, Mar 23, 2018 at 04:15:51PM +0200, Serhii Kharchenko wrote:
> Доброго дня, > > Столкнулся с ситуацией, когда процесс "nginx: cache manager process" > начинает что-то делать только через сутки после рестарта nginx'а. > Целые сутки он потребляет очень мало RAM (чуть больше 3500kB), в strace по > кругу следующее: > --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} --- > rt_sigreturn() = -1 EINTR (Interrupted system call) > epoll_wait(7, 55b5d0d6bdc0, 512, -1) = -1 EINTR (Interrupted system call) > --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} --- > rt_sigreturn() = -1 EINTR (Interrupted system call) > epoll_wait(7, 55b5d0d6bdc0, 512, -1) = -1 EINTR (Interrupted system call) > > Само собой, кеши за сутки распухают, никто не чистит устаревшие файлы. > > Через 24 часа (с небольшими копейками, минута-две) процесс начинает > потреблять оперативку и довольно шустро вычищает старые файлы из кешей. И > до следующего рестарта все ОК. > > Процесс "nginx: cache loader process" после рестарта аналогично ждет > минуту, потом работает несколько минут и завершается. Отмечу, что пауза в минуту перед началом работы cache loader'а, равно как и его завершения после загрузки кэшей - это нормально, так и должно быть. > Директив proxy_cache_path на весь nginx несколько, с разным параметром > inactive, есть даже с inactive=600. > > nginx-1.12.2, nginx-1.13.10 - подвержены "проблеме". > > Ни в документации, ни в коде, ни в гугле ничего пока по этому поводу не > нашел. > Просьба направить по правильному пути. В первую очередь имеет смысл убедиться, что из кэшей с inactive=600 действительно не удаляются ответы, к которым не обращались более 600 секунд. Потому что при перезапуске inactive начинает считаться от момента перезапуска, и кэши с очисткой по inactive будут ожидаемо расти до достижения времени inactive. Так что если у большей части кэшей inactive=1d, то будет наблюдаться как раз похожая на описанное картина. Если действительно установленное время inactive не выдерживается, то имеет смысл включить debug и посмотреть, что пишет cache manager. Кроме того: - если вдруг используются сторонние модули - стоит проверить без них; - басудя по strace - используется timer_resolution. Опять же, стоит проверить без. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru