Почему лак не учитывает лимит malloc?

У меня есть лак, работающий с -s malloc, 25G, но процесс продолжает расти, пока он не потребляет всю память сервера и не падает, перезапуская кеш.

Любая идея, что я могу проверить, чтобы увидеть, что не так?

Сервер имеет 16 ядер и 32 ГБ оперативной памяти.
Я использую лак 3.

28346? Ss 0:16 / usr / sbin / varnishd -P /var/run/varnishd.pid -a: 9290 -T localhost: 6082 -f /etc/varnish/default.vcl -s malloc, 25G -p thread_pools 16 -p thread_pool_min 160 -p thread_pool_max 16000 -p thread_pool_add_delay 2

объем памяти

Закрыть

3 ответа

Решение

-s malloc,25G ограничивает только размер кэша, а не размер varnishd процесс.

Важно помнить, что размер, который вы указываете с помощью аргумента -s, является размером для реального кэша. В дополнение к этому у Varnish есть накладные расходы для отслеживания кэша, поэтому фактический объем памяти Varnish будет превышать то, что указывает аргумент '-s', если кэш заполнен. Текущая оценка (может быть изменена в отдельных версиях Varnish) такова, что для каждого объекта требуется около 1 КБ служебных данных. Для 1 миллиона объектов это означает использование 1 ГБ дополнительной памяти.

Если у вас большой кеш, file Бэкэнд может быть предпочтительным.

Документация верна, но проблема еще хуже из-за фрагментации памяти. Чтобы быть в безопасности, вы должны разрешить от 1,5x до 2x размера, настроенного для malloc стивидор

Varnish может использовать двойное значение данного значения из-за фрагментации. Вы можете прочитать больше здесь: https://info.varnish-software.com/blog/understanding-varnish-cache-memory-usage

Другие вопросы по тегам