Nginx: 'no hay memoria en la zona de claves de caché', a pesar de tener mucho espacio

Nginx: 'no hay memoria en la zona de claves de caché', a pesar de tener mucho espacio

Veo repetidamente este error en mis registros de nginx:

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

Mirando el directorio utilizado para la zona de claves de caché, puedo ver que está flotando alrededor del326MBmarca:

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

Sin embargo, mi nginx.conf especifica un max_sizede1GB, por lo que debería haber mucho espacio:

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;

¿Qué podría estar pasando aquí? Hay mucho espacio en disco disponible (>50 GB libres) y después de encontrar nada relevante en eldocumentación, Estoy un poco perdido.

Respuesta1

Necesitasaumentar el tamaño de la memoria compartidaencendido keys_zoneen lugar de max_size.

Robando respuesta deeste hilo

claves_zona=api-data-cache:8mestaba definiendo una zona de memoria compartida nombrada api-data-cachecon un tamaño máximo de 8 MB. Contiene todas las claves activas y metadatos del caché. Entonces, cada vez que nginx verifica si una página se almacenó en caché, primero consulta la zona de memoria compartida y luego busca la ubicación del caché real, /usr/local/cache/nginxsi existe.

Dela documentación oficial, diceuna zona de megabyte puede almacenar alrededor de 8 mil claves. Entonces, dependiendo de su aplicación, deberá aumentarlo según sea necesario.

información relacionada