QUIQQER Redis Caching
Um QUIQQER noch schneller zu machen, empfehlen wir zusätzlich einen Redis Server als Caching Server zu nutzen.
Installation
Zunächst muss Redis auf deinem Server installiert werden.
Dazu kannst du der offiziellen Anleitung von Redis folgen: https://redis.io/docs/getting-started/installation/.
Alternativ kannst du (unter Ubuntu) folgenden Befehl verwenden:
sudo apt install redis
Ebenfalls muss die Redis Erweiterung für PHP (php-redis
) installiert werden:
sudo apt install php-redis
Abschließend führst du folgende Schritte in der QUIQQER Adminitration durch:
- Gehe zu
Einstellungen -> QUIQQER -> Cache
- Caching-Typ auf
Redis
umstellen - Unter
Redis Einstellungen -> Redis server
die Domain/IP des Redis Servers eintragen (localhost
wenn Redis auf demselben Server wie QUIQQER installiert ist) - Klicke auf
Redis Einstellungen -> Redis Server prüfen
um zu validieren, dass der Redis Server korrekt funktioniert.
Solltest du ein QUIQQER E-Commerce- oder ERP-System betreiben, beachte bitte die Besonderheiten im nächsten Abschnitt.
Redis für E-Commerce- und ERP-Systeme konfigurieren
Bei E-Commerce oder ERP Systemen sollte der Speicherplatz und die Memory Policy von Redis angepasst werden.
Speicherplatz anpassen
Je nach Größe und Umfang deiner QUIQQER Installation, benötigt der Cache bis zu mehreren Gigabyte Speicherplatz.
Es sollte also vorher geprüft werden, wie viel Speicherplatz Redis benötigt und ob genug Speicherplatz zur Verfügung steht.
Dazu muss der komplette Produkt-Cache erstellt und dessen Größe ermittelt werden:
1. System auf Filesystem Caching umstellen
- Öffne das Backend (Administration)
- Gehe zu
Einstellungen -> QUIQQER -> Cache
- Caching-Typ auf
Dateisystem
umstellen
2. Generiere den Produktcache
Um den kompletten Produktcache zu erstellen, gibt es ein Konsolen-Tool.
Führe folgenden Befehl im Hauptverzeichnis deiner QUIQQER Installation aus, um das Konsolen-Tool zu starten:
./console products:generate-product-cache
Je nachdem wie viel Produkte in deinem Shop existieren, kann dies etwas dauern.
3. Bestimmen der Cache-Größe
Wenn der Cache erfolgreich erzeugt wurde, führe bitte folgenden Befehl im Hauptverzeichnis deiner QUIQQER Installation aus:
du -hs var/cache
Die Ausgabe des Befehls nennt die Größe des Cache Ordners von QUIQQER.
4. Redis Größe konfigurieren
Nachdem du weißt, wie groß dein QUIQQER Cache ist, kannst du deinen Redis Server entsprechend anpassen.
Am besten weist du deinem Redis Server etwa 10 % mehr Speicherplatz zu, als der Cache Ordner groß ist.
Ist dein Cache Ordner also 1000 MB
groß, solltest du Redis 1100 MB
Speicherplatz zuweisen.
Den Speicherplatz legst du in der /etc/redis/redis.conf
Datei mit der maxmemory
Einstellung fest.
Danach musst du deinen Redis Server neustarten/-laden.
Memory Policy anpassen
Wir empfehlen die maxmemory-policy
des Redis Servers anzupassen.
Standardmäßig steht die policy auf noeviction
.
Die Einstellung besagt, dass der Redis Cache keine neuen Cache-Einträge anlegt, wenn der gesamte Speicherplatz aufgebraucht wurde.
Da in diesem Fall Fehler geworfen werden und bspw. neue Produkte nicht gecacht werden können, solltest du die maxmemory-policy
auf allkeys-lru
setzen.
Die Änderung nimmst du in der /etc/redis/redis.conf
Datei vor.
Danach musst du deinen Redis Server neustarten/-laden.
Bekannte Fehlermeldungen
Unter Umstände kann Redis einige Fehlermeldungen werfen.
Bekannte Fehlermeldung und die Lösung dazu findest du in diesem Abschnitt.
Beachte, dass jeder Redis Server an seine Umgebung angepasst werden sollte, daher können keine allgemeingültigen Lösungsvorschläge gemacht werden.
Die Hardware des Servers spielt hier eine grosse Rolle (beispielsweise wie viel RAM und Speicherplatz vorhanden ist).
MISCONF
Exception
PHP Fatal error: Uncaught RedisException: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.
Lösung
Da QUIQQER die Sessions in den Redis Server schreibt, sind viele Schreiboperationen notwendig.
Das standardmäßige Backup Verhalten kann hiermit Probleme bekommen.
Wir empfehlen die save
Direktive wie folgt anzupassen:
################################ SNAPSHOTTING ################################
#
# Save the DB on disk:
#
# save <seconds> <changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
#
# In the example below the behaviour will be to save:
# after 900 sec (15 min) if at least 1 key changed
# after 300 sec (5 min) if at least 10 keys changed
# after 60 sec if at least 10000 keys changed
#
# Note: you can disable saving completely by commenting out all "save" lines.
#
# It is also possible to remove all the previously configured save
# points by adding a save directive with a single empty string argument
# like in the following example:
#
# save ""
save 3600 1
save 1800 10
save 120 10000