Как Varnish справляется с нехваткой памяти?


9

Я использую Varnish 3.0.3 (последний на момент написания этой статьи) с более или менее установкой по умолчанию, используя для хранения следующее:

# # Cache file location
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
#
# # Cache file size: in bytes, optionally using k / M / G / T suffix,
# # or in percentage of available disk space using the % suffix.
VARNISH_STORAGE_SIZE=4000M
#
# # Backend storage specification
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
#

Большинство страниц, которые могут быть кэшированы, будут иметь очень длинный TTL. Сайт, с которым я работаю, огромен и имеет миллионы страниц, которые не могут вписаться в размер хранилища, указанный выше (4 ГБ).

Настройтесь на вопросы:

  • Давайте предположим, что все пространство памяти заполнено, а срок хранения в кэше еще не истек (мой TTL составляет 2 недели на каждый элемент в кэше).

  • Я предполагаю, что Ban Lurker здесь бесполезен, потому что он будет удалять только те элементы, срок действия которых истек, а срок действия ни одного не истек.

Вопросов:

  • Учитывая приведенный выше сценарий, что происходит с Varnish, когда поступают дополнительные запросы на то, чего еще нет в кэше? Делает ли Varnish какие-либо попытки удалить более старые элементы из кэша, независимо от TTL этих элементов? Лак падает? Повесьте?

  • Если Varnish не справляется со сценарием, могу ли я что-то сделать, чтобы настроить его для лучшей обработки сценария? (Я мог бы явно понизить TTL элементов в кеше, но мне интересно, есть ли дополнительные предложения).

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

Спасибо.


Следовать за:

Я тоже видела этот пост

который указал мне на

который, кажется, указывает на то, что все «просто происходит» ... но похоже, что он действительно отправляет запрос PURGE для URL, что может потребовать добавления соответствующего материала в ваш VCL (см. https://www.varnish-cache.org/ docs / 3.0 / tutorial / purging.html )

Я собираюсь попробовать это и продолжу, если это решит проблему.


3
Что касается нас, мы также используем Varnish для кэширования огромных объемов данных, в частности, хранилище изображений, содержащее около 2,8 миллиона изображений с файлом Varnish размером 30 гиг. Лак заполнить заполнить 30 гигов и, как только новые вещи будут добавлены в кэш, удаляет запись в кэше, который "не был доступен в течение длительного времени". С каждой записью кэша связано время, это последняя отметка времени доступа. Идет запись с самой низкой отметкой времени последнего доступа. (Кстати: почему мы кешируем изображения !? Потому что жесткий диск слишком медленный, чтобы обслуживать их, а SSD для всего стоит слишком дорого)
sinni800

Ответы:


1

Согласно вашей настройке, вы, кажется, используете диск для хранения кеша лака.

Это не рекомендуется ( для производительности ), если у вас нет веских причин (например, sinni800).

Попробуйте использовать оперативную память для хранения кэша лака («malloc» вместо «file») и воспроизведите проблему.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.