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?
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?
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.
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.
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.
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.
@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“?
@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).
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.
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.
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.
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.