home

Изменен алгоритм очистки кеша

В ELiS есть три директории с кешированными данными, /var/cache/elis/long, /var/cache/elis/middle, /var/cache/elis/short. В этих директориях хранятся долгосрочные кеши, среднесрочные и краткосрочные.

В кешах находятся извлеченная текстовая информация из ресурсов, отрендеренные страницы в различных форматах, уменьшенные обложки и т.п.

В принципе, все директории с кешами можно очистить и они заново восстановятся, при этом нагрузка на процессор как правило зависит от того, долгосрочный кеш, среднесрочный или краткосрочный.

Раньше алгоритм очистки кешей работал так, что запускался по расписанию раз в 5 минут и удалял файлы из трех директорий пока в них не освободится достаточно места, при этом удалялись те файлы первыми, к которым долго не обращались.

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

При этом в ELiS работает механизм генерации обложек тоже по расписанию и они как раз хранятся в краткосрочном кеше.

В итоге возникает ситуация, что:

  • когда кеш заканчивается, трётся краткосрочный, в котором обложки;
  • через непродолжительное время обложки заново генерируются, оставляя мало свободного места в краткосрочном кеше;
  • обложки заново удаляются и так по кругу.

Новый механизм очистки кеша[править]

Чтобы эту проблему избежать, реализован новый механизм очистки кеша, который работает на основе статистики об использовании ресурсов на основе ELiS PlayLogs. Теперь если к ресурсу долго не обращались пользователи, у него удаляется и долгосрочный и среднесрочный и краткосрочный кеш. Т.о. происходит очистка всех трех кешей равномерно.

При этом очистка кешей будет осуществляться в следующем порядке по длительности не использования ресурсов, пока не освободится 10 ГБ на диске с кешем:

  • 90 дней;
  • 30 дней;
  • 20 дней;
  • 10 дней;
  • 5 дней;
  • 24 часа;
  • 12 часов;
  • 6 часов;
  • 3 часа;
  • 2 часа;
  • 1 час;
  • 30 минут;
  • 10 минут.

Т.е. если на диске с кешем не хватает 10 ГБ, удаляются кеши для всех ресурсов, к которым не обращались более 90 дней. Если все ещё не хватает 10 ГБ, удаляются все кеши ресурсов, к которым не обращались более 30 дней и т.д.

Запустить очистку кеша в ручном режиме можно drush-командой elis-cache-autoclean:

# cd /var/www/vh/library
# sudo -u elis /home/elis/drush/vendor/bin/drush elis-cache-autoclean

Изменить требования к свободному месту, с которого начинается очистка, можно на странице admin/config/content/elis в параметре "ELiS cache free size minimum (MB)". Свободное место надо указывать в мегабайтах. По умолчанию 10240 МБ.

Старый режим очистки кеша[править]

Т.к. новый режим очистки является экспериментальным, а старый действует надежно, оба будут работать одновременно. В начале запускается старый, если на диске с кешем меньше 2 ГБ, затем новый.