Nginx: „kein Speicher in der Cache-Schlüsselzone“, trotz reichlich Platz

Nginx: „kein Speicher in der Cache-Schlüsselzone“, trotz reichlich Platz

In meinen Nginx-Protokollen wird mir immer wieder dieser Fehler angezeigt:

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

Wenn ich mir das Verzeichnis anschaue, das für die Cache-Schlüsselzone verwendet wird, sehe ich, dass es sich um den326 MBmarkieren:

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

Meine nginx.conf gibt jedoch eine max_sizevon1 GB, es sollte also genügend Platz vorhanden sein:

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;

Was könnte hier los sein? Es ist ausreichend Speicherplatz verfügbar (>50 GB frei) und nachdem ich nichts Relevantes in derDokumentation, ich bin ein wenig ratlos.

Antwort1

Du brauchstErhöhen Sie die Größe des gemeinsam genutzten Speichersan keys_zonestatt max_size.

Antwort stehlen vondieser Thread

keys_zone=API-Datencache:8mdefinierte eine gemeinsam genutzte Speicherzone api-data-cachemit der maximalen Größe von 8 MB. Sie enthält alle aktiven Schlüssel und Metadaten des Caches. Wenn nginx also prüft, ob eine Seite zwischengespeichert wurde, konsultiert es zuerst die gemeinsam genutzte Speicherzone und sucht dann nach dem Speicherort des tatsächlichen Caches, /usr/local/cache/nginxfalls dieser vorhanden ist.

Ausdie offizielle Dokumentation, es sagteine Megabyte-Zone kann etwa 8.000 Schlüssel speichern. Sie müssen es also je nach Anwendung nach Bedarf erhöhen.

verwandte Informationen