В документе говорится: "
max устанавливает максимальное количество элементов в кеше; при переполнении кеша удаляются наименее использованные элементы (LRU);
Сохраняется ли он при перезагрузке nginx или сервера?
Интересно, как это отслеживается? В памяти? Или маби использует метку времени последнего доступа к файловой системе?
Я не могу найти никакой информации об этом.
Как инфо, если LRU файл не определяется (из-за перезагрузки)
Редактировать:
Мне известно о процессе загрузчика кеша nginx. Если бы не этот процесс, файлы кеша вообще не были бы постоянными.
Согласно документации, этот процесс загрузки также включает метаданные, не говоря уже о том, что это за метаданные.
Вопрос в том, включают ли эти метаданные также отметку времени последнего доступа.
Однако: для того, чтобы он содержался, его нужно сначала написать.
Я установил inotifywait для файла и запросил его. Вот что приводит HTTP-запрос к файлу кеша:
cache-filename OPEN
cache-filename ACCESS
cache-filename CLOSE_NOWRITE,CLOSE
Похоже, что никаких изменений в файле не происходит, это приводит к предварительному заключению, что данные LRU не записываются на диск и, следовательно, не являются постоянными.
Но: данные все еще могут быть записаны в другом месте. Он также может быть записан из оперативной памяти на диск (в файлы кеша) другим процессом позже. Таким образом, данные являются постоянными, их актуальность на диске не гарантируется.
Что до сих пор оставляет вопрос без ответа.
Похоже, что nginx может использовать время доступа к файлу, чтобы указать, что нужно LRU. При проверке времени на всем парке серверов, некоторые из которых разделены на меньшие по размеру кеши, чем другие, из-за другого использования диска, выясняется, что на серверах с меньшими кэшами и большим давлением LRU нет файлов старше определенного возраста, измеренного с помощью atime (-amin в найти). Команда, которую я использовал, чтобы увидеть это:
for i in `seq 1000 100 4000`; do
echo -n "Files accessed more than $i minutes ago: "
find /opt/nginx-cache/data -type f -amin +$i | wc -l
done
И вывод с одного из наших серверов:
Files accessed more than 1000 minutes ago: 52154
Files accessed more than 1100 minutes ago: 40582
Files accessed more than 1200 minutes ago: 25527
Files accessed more than 1300 minutes ago: 19567
Files accessed more than 1400 minutes ago: 13384
Files accessed more than 1500 minutes ago: 7683
Files accessed more than 1600 minutes ago: 4597
Files accessed more than 1700 minutes ago: 3038
Files accessed more than 1800 minutes ago: 1916
Files accessed more than 1900 minutes ago: 1251
Files accessed more than 2000 minutes ago: 837
Files accessed more than 2100 minutes ago: 585
Files accessed more than 2200 minutes ago: 459
Files accessed more than 2300 minutes ago: 365
Files accessed more than 2400 minutes ago: 258
Files accessed more than 2500 minutes ago: 101
Files accessed more than 2600 minutes ago: 8
Files accessed more than 2700 minutes ago: 0
Files accessed more than 2800 minutes ago: 0
Files accessed more than 2900 minutes ago: 0
Files accessed more than 3000 minutes ago: 0
Если это верно, то загрузчик кеша, вероятно, считывает время файлов после перезагрузки, чтобы правильно удалить файлы LRU по мере необходимости.
Этот документ http://czerasz.com/2015/03/30/nginx-caching-tutorial/ описывает, что существует процесс, называемый «Загрузчик кэша». Он запускается только один раз (при запуске) и загружает метаданные в зону памяти. Он выполняется итерациями, пока не будут загружены все ключи.