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_size
von1 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_zone
statt max_size
.
Antwort stehlen vondieser Thread
keys_zone=API-Datencache:8mdefinierte eine gemeinsam genutzte Speicherzone
api-data-cache
mit 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/nginx
falls 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.