Re: Расход памяти под кшэ-зону при proxy_cache_min_uses
Maxim Dounin
mdounin на mdounin.ru
Вс Сен 11 10:57:43 UTC 2011
Hello!
On Sun, Sep 11, 2011 at 11:56:38AM +0400, Михаил Монашёв wrote:
> Здравствуйте.
>
> Столкнулся с тем, что введя директиву
> proxy_cache_min_uses 2;
> сильно увеличился расход памяти под зону, что приводит подобным
> ошибкам:
> 2011/09/11 11:19:01 [crit] 90687#0: ngx_slab_alloc() failed: no memory in cache keys zone "optcache3"
> и последующему уменьшению размера кэша на диске.
>
> Я конечно увеличил размер зоны, но оперативки жалко. Она могла бы
> использоваться файлухой. Да и рассчитать размер зоны теперь можно
> только экспериментальным путём.
>
> Как я понимаю, память используется под хранение информации о файлах,
> которых нет на диске, но которые имеют счётчик обращений. Весьма
> возможно, что эту информацию можно хранить более компактно, чем
> информацию о полноценном закэшированном файле.
Некуда особо компактнее: ключ, а равно все указатели, так или иначе
хранить. Максимум - можно поспиливать несколько полей,
относящихся непосредственно к файлу на диске, таких как fs_size.
Но:
1) это в разы усложнит работу с записями в кеше при необходимости
преобразования записей одного типа в другой;
2) всё равно не позволит влезть в 64 байта на amd64, т.е. по
прежнему будет использоваться 128 байт на запись.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru