Gigantischer Cache von 21GB

Hallo Community,

wir validieren die Version 6 für unsere Shops mit einer ersten Instanz. Dazu haben wir Kunden, Bestellungen und Produkte aus dem bestehenden Shopware5 importiert.

Dabei ist der Cache des inaktiven Shops (mit mir, als einzigem Benutzer) auf unglaubliche 21GB angewachsen! Ist das normal?

Darauf hin habe ich per Backend das “Löschen und Aufwärmen” angestoßen. Etwa nach 40min ist der Cache auf 481MB geschrumpft, aber bei jedem Klick im Frontend kommen etwa 20MB dazu!

Warum verhält es sich so?

Gibt es eine Möglichkeit die Cache-Größe auf ein paar GB zu beschränken?

Danke im Vorraus,

ruppert

Hallo,

wir sind auch dabei bei der Validierung/Entwicklung.

Ist wohl normal, wir haben 500 Kategorien und nur ein paar Produkte (ca. 1000) importiert und haben nach dem Cache aufwärmen immer 2.6 Gigabyte.

Mir graut es davor, alle 50.000 drin zu haben und den Cache aufwärmen zu lassen.

Wobei mir scheint, daß bei Euch der Cache gar nicht aufgewärmt ist mit den 481MB oder täusche ich mich da.Habt ihr das „Cache aufwärmen“ über den admin-Bereich gemacht?

Und wir sind im Produktivmodus pur.

Gruß,

Werner.

1 Like

Wir haben auch schon ein paar weitere Optimierungen eingeplant zur Verbesserung der Speicherauslastung des Caches. Kommt auch zeitnah auf die externe Roadmap.

Ich denke dann wird die größe sich auch nochmal deutlich reduzieren.

1 Like

@Werner:

Danke für deinen Feedback. Der Cache ist jetzt aktuell bei 1,7GB, demnach war er noch garnicht “aufgewärmt”. Der von mir beobachtete Zuwachs war wohl nicht auf die Klicks (oder vielleicht auch?) zurückzuführen, sondern auf das  immernoch laufende “Aufwärmen”. Und ja, ich habe es übers Backend angestoßen.

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍:

Uff… das ist ganz schön bitter! Ich habe gehofft, dass ich bei der Installation/Entwicklung irgendetwas verbockt habe und, dass der gigantische Cache darauf zurückzuführen ist. 

Selbst eine Reduktion um die Hälfte käme für uns nicht Infrage, da wir sehr viele Shops im Einsatz haben.

Danke für schnelle Antworten!

Grüße, ruppert

P.S: Cachegröße nochmal gecheckt - 1,8GB steigend…

Das hängt primär damit zusammen, dass jeder Context (bspw. die Kombination Kunde & Land) ein eigener Cache ist, weil hier ja auch theoretisch eigene Preise usw. vorhanden sein können. Wenn du also viele mögliche Kombinationen im Shop hast, kann es auch zu vielen möglichen Cache-Dateien kommen.

@ruppert‍ habt Ihr evtl. den Entwicklermodus noch an? Dort wird im Cache auch einträge vom Profiler angelegt. Dies sorgt bei mir in Testshop für ein stark Wachsenden Cache ohne die Einträge ist, der aber eigentlich deutlich kleiner.

Gruß

laurentius

@laurentius‍ ja, der Shop läuft im Developer-Modus und das Größte von dem Cache mach der Ordner „Profiler“ aus. Intuitiv hätte ich gedacht, dass man im DEV-Modus eher auf den Cache verzichten kann/will, aber ok.

Was müsste ich denn tun? Auf PROD-Modus umsteigen und den Cache erneut „löschen und aufwärmen“?

Danke für den Hinweis,

ruppert.

@ruppert‍ ja, soweit ich es bisher festgestellt habe liegen im Profiler Ordner, die Daten, die dir im DEV Modus auch in der Bar am unteren Bildschirmrand (von Symfony) angezeigt werden. Deswegen wird bei jedem Aufruf einer Shopseite, dort viele Verbindungsdaten, Ergebnisse von Datenbankabfragen etc. gespeichert. Was bei Fehlern hilfreich sein kann, aber natürlich auch viele “Log” Daten erzeugt.

Weiter habe ich festgestellt, das ein einfaches löschen des Caches im Backend (ich vermutte mal das der Befehl analog arbeitet) diesen Ordner nicht leer.

 

Für euch, würde ich sagen, stellt sich zum einen die Frage, ob der Shop noch im DEV Modus sein muss.

Soweit ich es bisher festgestellt habe, wird im PROD-Modus keine Daten mehr angelegt (was ja auch nachvollziehbar ist, da dann der Symfoy Profiler garnicht mehr aktiv ist). Deswegen solltet Ihr das Problem in Prod nicht mehr haben.

Ihr könnt auch den Shop im DEV Modus lassen und den Ordner Profiler leeren. Bisher habe ich nichts negatives dazu gelesen. Hab das aber erst letztes Wochenende gemacht, weswegen ich noch nicht langfrsitige Erfahrung habe, ob dadurch an irgendeine Stelle ein Problem auftritt. Da zum einen die Daten im Cache Ordner liegen und scheinbar nur für den Symfony Profiler benötigt werden, sollten da auch eigentlich keine Probleme entstehen (außer natürlich, das Ihr nicht mehr die Symfony Profiler Seiten von Früheren Shop Aufrufen habt).

Gruß

lautentius

1 Like

Hallo,

sicher richtig, daß im Produtiv-Modus kein Profiler Ordner angelegt wird.

Trotzdem wird der Produktiv-Cache sehr groß, weshalb Shopware das ja auch in der Roadmap hat.

Probiert es doch einfach aus, spricht ja nichts dagegen.

Gruß,

Werner.

1 Like

Kleiner Tipp am Rande… haltet die Datenbank auch im Blick. Die kann ggf. auch sehr schnell sehr groß werden. Gerade die Tabelle “cart” kann bei größeren Shops schnell explodieren.

Hallo,

wie groß ist denn „groß“?

Wird die groß, weil die nicht ab und zu bereinigt wird, oder weil ihr glücklicherweise soviele Kunden habt?

 

Gruß,

Werner.

Die DB kann schnell mehrere GB annehmen - das hat erst mal nicht so sehr mit der Anzahl der Kunden zu tun. Die Card Tabelle macht hier Probleme, weil die nie aufgeräumt wird (bis jetzt 6.3.1.0). D.h. legt der Kunde etwas in den Warenkorb und verlässt den Shop bleibt der Eintrag bestehen.

Hallo,

ja, das dachte ich mir, daß die nie aufgeräumt wird, könnte man ja aber evtl. als cron-Job implementieren,

nehme ich mal an.

Aber danke für den Tipp, daß man auf die achten sollte, werden wir machen.

Hallo,

mmmh, irgendwie ist die Cache-Größe jetzt nochmal angewachsen mit den letzten Versionen von Shopware 6 (akutell haben wir die 6.3.3.1),

obwohl ich dieselben (noch wenigen) Produkte und Kategorien habe und sonst auch nichts geändert habe.

Bin jetzt bei 4.1 GB, waren früher mal 2.5 GB.

Ist das bei Euch auch so?

Hat jemand schon einen größeren Shop im Produktivmodus mit mehr als 100.000 Produkten und mehr als 200 Kategorien am laufen?

Wenn ja, wie groß ist das aktuelle Cache-Verzeichnis?

Anzahl der Kundengruppen wäre auch interessant, angeblich hängt davon ja auch die Größe ab,

wir haben allerdings im Moment nur eine, brauchen aber mindestens dann 2.

Gruß,

Werner.

Wir haben einen Shopware 6 Shop in production mit ca 800 Produkten, der Cache nimmt momentan 160 gigabyte ein. Das ist echt kein Zustand!

Löscht ihr den denn regelmäßig? An der Empfehlung die wir in SW5 hatten, dass man den einmal am Tag leeren sollte, hat sich ja eigentlich nichts geändert.

Sollte sich ja relativ einfach per Cronjob anlegen lassen.

Hallo,

der Cache dient doch eigentlich zur Performance-Verbesserung des StoreFronts, ohne den der Shop sehr, sehr langsam wäre.

Das höhrt sich für mich nun so an, als wären im Cache auch Dinge drin, die nicht unbedingt den StoreFront betreffen,

denn wenn der Cache gelöscht und neu aufgewärmt wird, erreicht er dann nicht genau dieselbe Größe wieder?

Ohne aufgewärmten Cache, will ich den Shop nicht betreiben wollen, das will ich weder dem Kunden, unseren Mitarbeitern noch

den Bots zumuten.

Gruß,

Werner.

Hallo Werner,

das aufwärmen bringt dir ja nur was, wenn du auch Traffic auf der Seite hast, sonst ist der Cache schon wieder abgelaufen, wenn der User die Seite öffnet. Aufwärmen macht für mich nur Sinn, wenn du eh eine hohe Cache hit-rate hast. Das Aufwärmen ist ja auch nur der Cache im Standard Context (= Standard-Lieferland, uneingeloggt, Standardwährung usw.). Für alle neuen Kombinationen gibt es dann ja einen eigenen Cache, da der Inhalt (bspw. Preise) auch unterschiedlich sein können. Wenn du also viele Kombinationen hast, hast du auch einen deutlich größeren Cache als nach dem Aufwärmen. Um sicherzustellen, dass der Ordner nicht bis ins unermessliche wächst, macht das leeren daher Sinn.

Aktuell wird sehr sehr viel gecached, entsprechend wird der Cache auch sehr groß. Mit dem Epic auf der Roadmap werden wir gezielt einige Dinge aus dem Cache rausnehmen, damit man hie rhalt keinen so großen Cache erhält.

Viele Grüße
Moritz

Hallo Moritz,

ja, das habe ich gesehen in der Roadmap, finde ich ja gut so!!

Denke, daß wir schon viel Traffic auf unserer Webseite haben, insofern wäre die Cache hit-rate einigermassen groß.

Aber der Punkt ist eigentlich, daß ich nicht will, daß ein Mitarbeiter, ein Kunde oder ein Bot was aufruft, was nicht im Cache ist,

weil Shopware da einfach zu langsam ist, ist einfach so, tut mir leid.

Insofern hat man ja keine andere Wahl, als zu versuchen, daß der Cache immer möglichst aufgewärmt ist,

oder wie will man das sonst verhindern?

Ansonsten würden sich die Zeiten ja verschlechtern im Vergleich zu unserem jetzigen Shop,

was wir natürlich nicht wollen.

Andere betreiben auch etwas Aufwand dafür, daß der Cache warm ist, wie man hier sieht (wenn ich das richtig interpretiere):

https://forum.shopware.com/discussion/comment/283430#Comment_283430

Gruß,

Werner.