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

2

Estou vendo repetidamente esse erro nos meus registros 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 da chave de cache, vejo que está passando o mouse sobre a marca de 326 MB :

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

No entanto, meu nginx.conf especifica max_size de 1 GB , o que significa que deve haver espaço de sobra:

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á muito espaço em disco disponível (> 50 GB gratuitos) e depois de não encontrar nada relevante na documentação , Estou com uma pequena perda.

    
por Jonathan 20.05.2015 / 16:36

1 resposta

3

Você precisa aumentar o tamanho da memória compartilhada em keys_zone em vez de% código%.

Roubando a resposta de este tópico

keys_zone=api-data-cache:8m was defining shared memory zone named api-data-cache with maximum size 8 MB. It holds all active keys and metadata of the cache. So, whenever nginx checks if a page was cached, it consults the shared memory zone first, then seek the location of actual cache in /usr/local/cache/nginx if cache exist.

A partir da documentação oficial , diz que uma zona de megabytes pode armazenar cerca de 8 mil chaves . Então, dependendo do seu aplicativo, você precisa aumentá-lo conforme necessário.

    
por 20.05.2015 / 16:54

Tags