Nginx: ‘sem memória na zona de chaves de cache’, apesar de muito espaço

Nginx: ‘sem memória na zona de chaves de cache’, apesar de muito espaço

Estou vendo repetidamente esse erro em meus logs do nginx:

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

Olhando para o diretório usado para a zona de chave de cache, posso ver que ele está pairando em torno do326 MBmarca:

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

No entanto, meu nginx.conf especifica um max_sizede1 GB, então deve haver bastante espaço:

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;

O que poderia estar acontecendo aqui? Há bastante espaço em disco disponível (>50 GB livres) e depois de não encontrar nada relevante nodocumentação, estou um pouco perdido.

Responder1

Você precisaaumentar o tamanho da memória compartilhadaligado keys_zoneem vez de max_size.

Roubando resposta deeste tópico

keys_zone=api-data-cache:8mestava definindo uma zona de memória compartilhada nomeada api-data-cachecom tamanho máximo de 8 MB. Ele contém todas as chaves ativas e metadados do cache. Portanto, sempre que o nginx verifica se uma página foi armazenada em cache, ele consulta primeiro a zona de memória compartilhada e, em seguida, procura a localização do cache real, /usr/local/cache/nginxse houver cache.

Dea documentação oficial, dizuma zona de megabyte pode armazenar cerca de 8 mil chaves. Portanto, dependendo da sua aplicação, você precisa aumentá-la conforme necessário.

informação relacionada