Почему лак не учитывает лимит 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