2016-11-23 1 views
2

Ich bin ziemlich neu bei NGINX und versuche, Caching einzurichten, obwohl ich in der Lage bin, Caching-Arbeit zu bekommen Ich stoße auf ein Speicherauslastungsproblem. Nun heißt es in der NGINX-Dokumentation, dass NGINX ca. 8000 Cache-Schlüssel innerhalb von 1 MB Speicherplatz speichern kann. Also mit der Konfiguration, die ich habe, habe ich einen Belastungstest mit 20K eindeutigen Anfragen ausgeführt. Sehr schnell sehe ich, dass der Speicherverbrauch auf den NGINX-Boxen auf 70 MB hochgesetzt wurde. Nach der Dokumentation würde ich mir vorstellen, dass die Speicherauslastung viel niedriger ist als das, was ich sehe. Außerdem habe ich bestätigt, dass die Speicherbelegung nur beim Aktivieren des Caching-Effekts auftritt.NGINX-Speicher-Spicking beim Caching

Hier ist das Caching Teil meiner NGINX config:

proxy_cache_path /tmp/cache keys_zone=static:4000m max_size=10g inactive=12h; 
proxy_cache static; 
add_header X-Cache-Status $upstream_cache_status; 
proxy_ignore_headers X-Accel-Expires Expires Set-Cookie; 
proxy_ignore_headers Cache-Control; 
proxy_cache_min_uses 1; 
proxy_cache_key '$scheme$host$uri'; 
proxy_cache_valid 200 12h; 

Kann jemand bitte helfen?

Vielen Dank im Voraus.

Antwort

0

Dies scheint ein Problem von Nginx unter Windows zu sein.

Unter Linux ist dieses Verhalten nicht aufgetreten, es speichert ~ 8K Anfragen pro 1Mb keys_zone Größe, wie erwartet.

Auf Windows-Cache verhält sich anders.

Notiere die Bemerkung über Nginx site:

"Der Cache und andere Module, die Shared-Memory-Unterstützung erfordern nicht auf Windows Vista und späteren Versionen .."

Ohne in Quellen suchen Ich kann nicht einmal sagen, ob der Cache mit der Speicherfreigabe unter Windows überhaupt richtig funktioniert, auch wenn genügend Speicherplatz vorhanden ist.

Von meinen Tests bis zum Erreichen der Dateianzahllimits wird der Cache wie erwartet ausgeführt. Es erfordert wahrscheinlich 4 KB (Seitengröße) für jede Schlüsselzuweisung in der Zone unter Windows.

I mit 25K-Anforderungen getestet und die maximale Anzahl von Dateien, die im Cache gehalten werden, ist auf die Größe proportional keys_zone wie folgt:

1m <= 253 files 
2m <= 508 files 
3m <= 761 
5m <= 1274 
10m <= 2548 
20m <= 5103 
40m <= ~8K 
80m <= ~20K 

(Nummern für 1.9.3 sind, 1.11.6 ähnliches Verhalten aussetzt mit etwas anderen Zahlen).

Dies steht im Einklang mit Ihrer Gedächtniswachstumsbeobachtung. Sobald Sie die maximale Anzahl von Dateien pro Schlüssel_Zone erreicht haben, wird es merkwürdig ausfallen.

Unter Ubuntu erstellen Nginx 1.4 und 1.10 die erwartete Anzahl von Cache-Dateien in Bezug auf den Grenzwert; Prozessspeicher für 25K zwischengespeicherte Anforderungen wächst wie erwartet nicht weit über ~ 1 MB pro 8 KB-Anforderungen hinaus.