Best Practices für die Konfiguration des Redis-Service
- Themen:
- Best Practices
- Cache
Erstellt für:
- Experte
- Entwickler
- Admin
- Konfigurieren des Redis-L2-Cache
- Redis-Slave-Verbindung aktivieren
- Schlüssel vorab laden
- Veralteten Cache aktivieren
- Trennen des Redis-Cache von der Redis-Sitzung
- Komprimiert den Redis-Cache und verwendet
gzip
für eine höhere Komprimierung.
Konfigurieren des Redis-L2-Cache
Konfigurieren Sie den Redis-L2-Cache, indem Sie die REDIS_BACKEND
-Bereitstellungsvariable in der .magento.env.yaml
-Konfigurationsdatei festlegen.
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
Informationen zur Umgebungskonfiguration in der Cloud-Infrastruktur finden Sie in den REDIS_BACKEND
im Handbuch zu Commerce in der Cloud-Infrastruktur.
Bei On-Premise-Installationen finden Sie weitere Informationen unter Konfigurieren des RedisSeitencachings im Konfigurationshandbuch.
ece-tools
verwenden. Falls nicht, aktualisieren Sie auf die neueste Version. Sie können die in Ihrer lokalen Umgebung installierte Version mithilfe des composer show magento/ece-tools
CLI-Befehls überprüfen.Speicherdimensionierung des L2-Cache (Adobe Commerce Cloud)
Der L2-Cache verwendet ein temporäres Dateisystem als Speichermechanismus. Im Vergleich zu spezialisierten Schlüssel-Wert-Datenbanksystemen verfügt ein temporäres Dateisystem nicht über eine Richtlinie zum Verdrängen von Schlüsseln, um die Speichernutzung zu kontrollieren.
Fehlende Speicherbelegungskontrolle kann dazu führen, dass die Speicherbelegung im L2-Cache im Laufe der Zeit zunimmt, indem der veraltete Cache gesammelt wird.
Um zu vermeiden, dass der Arbeitsspeicher bei L2-Cache-Implementierungen erschöpft ist, löscht Adobe Commerce den Speicher, wenn ein bestimmter Schwellenwert erreicht wird. Der standardmäßige Schwellenwert ist 95 %.
Es ist wichtig, die maximale Speicherauslastung des L2-Cache basierend auf den Projektanforderungen für Cache-Speicher anzupassen. Verwenden Sie eine der folgenden Methoden, um die Cache-Größe des Speichers zu konfigurieren:
- Erstellen Sie ein Support-Ticket, um Größenänderungen der
/dev/shm
anzufordern. - Passen Sie die
cleanup_percentage
auf Anwendungsebene an, um den maximalen Füllprozentsatz des Speichers zu begrenzen. Der verbleibende freie Speicher kann von anderen Diensten genutzt werden.
Sie können die Konfiguration in der Bereitstellungskonfiguration unter der Cache-Konfigurationsgruppecache/frontend/default/backend_options/cleanup_percentage
anpassen.
cleanup_percentage
konfigurierbare Option wurde in Adobe Commerce 2.4.4 eingeführt.Der folgende Code zeigt eine Beispielkonfiguration in der .magento.env.yaml
:
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
cleanup_percentage: 90
Die Cache-Anforderungen können je nach Projektkonfiguration und benutzerdefiniertem Code von Drittanbietern variieren. Aufgrund des Umfangs der Speicherdimensionierung für den L2-Cache kann der L2-Cache ohne zu viele Schwellenwerttreffer ausgeführt werden.
Idealerweise sollte sich die Speicherauslastung des L2-Caches auf einem bestimmten Niveau unterhalb des Schwellenwerts stabilisieren, nur um eine häufige Speicherbereinigung zu vermeiden.
Sie können die Speicherauslastung des L2-Cache-Speichers auf jedem Knoten des Clusters mit dem folgenden CLI-Befehl überprüfen und nach der /dev/shm
suchen.
Die Nutzung kann von Knoten zu Knoten variieren, sollte aber auf denselben Wert fallen.
df -h
Redis-Slave-Verbindung aktivieren
Aktivieren Sie in der .magento.env.yaml
-Konfigurationsdatei eine Redis-Slave-Verbindung, damit nur ein Knoten Lese-/Schreibdatenverkehr verarbeiten kann, während die anderen Knoten nur den schreibgeschützten Datenverkehr verarbeiten.
stage:
deploy:
REDIS_USE_SLAVE_CONNECTION: true
Siehe REDIS_USE_SLAVE_CONNECTION im Handbuch zu Commerce in Cloud-Infrastrukturen.
Konfigurieren Sie bei lokalen Adobe Commerce-Installationen die neue Redis-Cache-Implementierung mithilfe der bin/magento:setup
. Siehe Verwenden von Redis für den-Cache) im Konfigurationshandbuch.
Schlüssel vorab laden
Um Daten zwischen Seiten wiederzuverwenden, listen Sie die Schlüssel zum Vorausfüllen in der .magento.env.yaml
-Konfigurationsdatei auf.
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
id_prefix: '061_' # Prefix for keys to be preloaded
backend_options:
preload_keys: # List the keys to be preloaded
- '061_EAV_ENTITY_TYPES:hash'
- '061_GLOBAL_PLUGIN_LIST:hash'
- '061_DB_IS_UP_TO_DATE:hash'
- '061_SYSTEM_DEFAULT:hash'
Bei On-Premise-Installationen finden Sie weitere Informationen unter Redis-Vorabladefunktion im Konfigurationshandbuch.
Veralteten Cache aktivieren
Verringern Sie die Sperrwartezeiten und verbessern Sie die Leistung - insbesondere bei der Verarbeitung zahlreicher Blöcke und Cache-Schlüssel - durch die Verwendung eines veralteten Cache bei gleichzeitiger Generierung eines neuen Cache. Aktivieren Sie veralteten Cache und definieren Sie Cache-Typen in der .magento.env.yaml
Konfigurationsdatei:
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
default:
backend_options:
use_stale_cache: false
stale_cache_enabled:
backend_options:
use_stale_cache: true
type:
default:
frontend: "default"
layout:
frontend: "stale_cache_enabled"
block_html:
frontend: "stale_cache_enabled"
reflection:
frontend: "stale_cache_enabled"
config_integration:
frontend: "stale_cache_enabled"
config_integration_api:
frontend: "stale_cache_enabled"
full_page:
frontend: "stale_cache_enabled"
translate:
frontend: "stale_cache_enabled"
full_page
-Cache für Adobe Commerce für Cloud-Infrastrukturprojekte nicht relevant, da sie „Fastly verwenden.Informationen zum Konfigurieren von On-Premise-Installationen finden Sie unter Veraltete Cache im Konfigurationshandbuch.
Separater Redis-Cache und Sitzungsinstanzen
Wenn Sie den Redis-Cache von der Redis-Sitzung trennen, können Sie den Cache und die Sitzungen unabhängig verwalten. Cache-Probleme werden so verhindert, dass Sitzungen beeinträchtigt werden, was sich auf den Umsatz auswirken könnte. Jede Redis-Instanz wird auf ihrem eigenen Kern ausgeführt, wodurch die Leistung verbessert wird.
-
Aktualisieren Sie die
.magento/services.yaml
Konfigurationsdatei.mysql: type: mysql:10.4 disk: 35000 redis: type: redis:6.0 redis-session: # This is for the new Redis instance type: redis:6.0 search: type: elasticsearch:7.9 disk: 5000 rabbitmq: type: rabbitmq:3.8 disk: 2048
-
Aktualisieren Sie die
.magento.app.yaml
Konfigurationsdatei.relationships: database: "mysql:mysql" redis: "redis:redis" redis-session: "redis-session:redis" # Relationship of the new Redis instance search: "search:elasticsearch" rabbitmq: "rabbitmq:rabbitmq"
-
Senden Sie ein Adobe Commerce-Support-Ticket, um die Bereitstellung einer neuen Redis-Instanz anzufordern, die Sitzungen in Produktions- und Staging-Umgebungen gewidmet ist. Schließen Sie die aktualisierten
.magento/services.yaml
und.magento.app.yaml
Konfigurationsdateien ein. Dies führt zu keinen Ausfallzeiten, erfordert jedoch eine Bereitstellung, um den neuen Service zu aktivieren. -
Stellen Sie sicher, dass die neue Instanz ausgeführt wird, und notieren Sie sich die Portnummer.
echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
-
Fügen Sie die Portnummer zur
.magento.env.yaml
hinzu.IMPORTANT
Konfigurieren Sie den Redis-Sitzungs-Port nur, wennece-tools
ihn nicht automatisch aus der Definition desMAGENTO_CLOUD_RELATIONSHIPS
Redis-Sitzungs-Service erkennen kann.NOTE
disable_locking
muss auf1
gesetzt werden.SESSION_CONFIGURATION: _merge: true redis: port: 6374 # check the port in $MAGENTO_CLOUD_RELATIONSHIPS and put it here (by default, you can delete this line!!) timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60
-
Entfernen Sie Sitzungen aus der Standarddatenbank (
db 0
) auf der Redis-Cache-Instanz.redis-cli -h 127.0.0.1 -p 6374 -n 0 FLUSHDB
Während der Bereitstellung sollten die folgenden Zeilen im „Build- Bereitstellungsprotokoll“ angezeigt:
W: - Downloading colinmollenhour/credis (1.11.1)
W: - Downloading colinmollenhour/php-redis-session-abstract (v1.4.5)
...
W: - Installing colinmollenhour/credis (1.11.1): Extracting archive
W: - Installing colinmollenhour/php-redis-session-abstract (v1.4.5): Extracting archive
...
[2022-08-17 01:13:40] INFO: Version of service 'redis' is 6.0
[2022-08-17 01:13:40] INFO: Version of service 'redis-session' is 6.0
[2022-08-17 01:13:40] INFO: redis-session will be used for session if it was not override by SESSION_CONFIGURATION
Cache-Komprimierung
Wenn Sie mehr als 6 GB Redis-maxmemory
verwenden, können Sie die Cache-Komprimierung verwenden, um den von den Schlüsseln belegten Speicherplatz zu reduzieren. Beachten Sie, dass es einen Zielkonflikt mit der Client-seitigen Leistung gibt. Wenn Sie CPUs haben, aktivieren Sie diese. Siehe Verwenden von Redis für die Sitzungsspeicherung im Konfigurationshandbuch.
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true;
frontend:
default:
backend_options:
compress_data: 4 # 0-9
compress_tags: 4 # 0-9
compress_threshold: 20480 # don't compress files smaller than this value
compression_lib: 'gzip' # snappy and lzf for performance, gzip for high compression (~69%)