Nginx: «нет памяти в зоне ключей кэша», несмотря на достаточно места

Nginx: «нет памяти в зоне ключей кэша», несмотря на достаточно места

Я постоянно вижу эту ошибку в журналах nginx:

[crit] 30165#0: ngx_slab_alloc() failed: no memory in cache keys zone "api-data-cache"

Глядя на каталог, используемый для зоны ключа кэша, я вижу, что он колеблется около326 МБотметка:

du -s /usr/local/nginx/cache/
326652

Однако мой nginx.conf max_sizeуказывает1ГБ, поэтому места должно быть предостаточно:

proxy_cache_path        /usr/local/nginx/cache levels=1:2 keys_zone=api-data-cache:8m max_size=1g inactive=600m;
proxy_cache_key         "$scheme$host$request_uri/$device_type$cookie_w3tc_referrer";
proxy_cache_use_stale   updating timeout http_500 http_502 http_503 http_504;
proxy_ignore_headers    X-Accel-Expires Expires Cache-Control;

Что здесь может происходить? На диске достаточно места (>50 ГБ свободного) и после того, как я не нашел ничего подходящего вдокументация, Я в некоторой растерянности.

решение1

Вам нужноувеличить размер разделяемой памятивместо .keys_zonemax_size

Кража ответа изэта тема

keys_zone=api-data-cache:8mопределял зону общей памяти с именем api-data-cacheи максимальным размером 8 МБ. Она содержит все активные ключи и метаданные кэша. Поэтому всякий раз, когда nginx проверяет, была ли страница кэширована, он сначала обращается к зоне общей памяти, а затем ищет местоположение фактического кэша, если /usr/local/cache/nginxкэш существует.

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

Связанный контент