Best practice per la configurazione del servizio Redis
- Configura cache L2 Redis
- Abilita connessione slave Redis
- Precarica chiavi
- Abilita cache non aggiornata
- Separare la cache Redis dalla sessione Redis
- Comprimi la cache Redis e utilizza
gzip
per una compressione più elevata
Configura cache L2 Redis
Configurare la cache di Redis L2 impostando la variabile di distribuzione REDIS_BACKEND
nel file di configurazione .magento.env.yaml
.
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
Per la configurazione dell'ambiente nell'infrastruttura cloud, vedere REDIS_BACKEND
nella Guida all'infrastruttura cloud di Commerce.
Per le installazioni locali, vedere Configure Redis page caching nella Guida alla configurazione.
ece-tools
. In caso contrario, aggiorna alla versione più recente. È possibile controllare la versione installata nell'ambiente locale utilizzando il comando CLI composer show magento/ece-tools
.Dimensioni memoria cache L2 (Adobe Commerce Cloud)
La cache L2 utilizza un file system temporaneo come meccanismo di archiviazione. Rispetto ai sistemi di database specializzati con valori chiave, un file system temporaneo non dispone di criteri di rimozione delle chiavi per controllare l'utilizzo della memoria.
La mancanza di controllo dell'utilizzo della memoria può causare un aumento nel tempo dell'utilizzo della memoria cache L2 accumulando la cache non aggiornata.
Per evitare l’esaurimento della memoria per le implementazioni della cache L2, Adobe Commerce cancella l’archiviazione quando viene raggiunta una determinata soglia. Il valore di soglia predefinito è 95%.
È importante regolare l’utilizzo massimo della memoria cache L2 in base ai requisiti del progetto per lo storage della cache. Utilizzare uno dei metodi seguenti per configurare il dimensionamento della cache di memoria:
- Creare un ticket di supporto per richiedere modifiche alle dimensioni del mount
/dev/shm
. - Regolare la proprietà
cleanup_percentage
a livello di applicazione per limitare la percentuale di riempimento massima dell'archiviazione. La memoria disponibile rimanente può essere utilizzata da altri servizi.
È possibile modificare la configurazione nella configurazione di distribuzione nel gruppo di configurazione della cachecache/frontend/default/backend_options/cleanup_percentage
.
cleanup_percentage
è stata introdotta in Adobe Commerce 2.4.4.Il codice seguente mostra un esempio di configurazione nel file .magento.env.yaml
:
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
cleanup_percentage: 90
I requisiti della cache possono variare in base alla configurazione del progetto e al codice personalizzato di terze parti. L'ambito del dimensionamento della memoria cache L2 consente alla cache L2 di funzionare senza troppi hit di soglia.
Idealmente, l'utilizzo della memoria cache L2 dovrebbe stabilizzarsi a un certo livello al di sotto della soglia, proprio per evitare frequenti cancellazioni di memoria.
È possibile verificare l'utilizzo della memoria di archiviazione nella cache L2 in ogni nodo del cluster utilizzando il seguente comando CLI e cercando la riga /dev/shm
.
L’utilizzo può variare tra nodi diversi, ma deve convergere allo stesso valore.
df -h
Abilita connessione slave Redis
Abilitare una connessione slave Redis nel file di configurazione .magento.env.yaml
per consentire a un solo nodo di gestire il traffico di lettura/scrittura mentre gli altri nodi gestiscono il traffico di sola lettura.
stage:
deploy:
REDIS_USE_SLAVE_CONNECTION: true
Vedi REDIS_USE_SLAVE_CONNECTION nella Guida di Commerce sull'infrastruttura cloud.
Per le installazioni Adobe Commerce locali, configurare la nuova implementazione della cache Redis utilizzando i comandi bin/magento:setup
. Vedere Utilizzare Redis per la cache predefinita nella Guida alla configurazione.
Precarica chiavi
Per riutilizzare i dati tra pagine, elencare le chiavi per il precaricamento nel file di configurazione .magento.env.yaml
.
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'
Per le installazioni locali, vedere Funzionalità di precaricamento Redis nella Guida alla configurazione.
Abilita cache non aggiornata
Riduci i tempi di attesa di blocco e migliora le prestazioni, soprattutto quando si tratta di numerosi blocchi e chiavi di cache, utilizzando una cache obsoleta durante la generazione in parallelo di una nuova cache. Abilitare la cache non aggiornata e definire i tipi di cache nel file di configurazione .magento.env.yaml
:
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
non è rilevante per i progetti di infrastruttura cloud di Adobe Commerce, perché utilizza Fastly.Per la configurazione delle installazioni locali, vedere Opzioni cache non aggiornate nella Guida alla configurazione.
Cache Redis e istanze di sessione separate
La separazione della cache Redis dalla sessione Redis consente di gestire la cache e le sessioni in modo indipendente. Evita che i problemi di cache influiscano sulle sessioni, il che potrebbe influire sui ricavi. Ogni istanza Redis viene eseguita sul proprio core, migliorando le prestazioni.
-
Aggiornare il file di configurazione
.magento/services.yaml
.code language-yaml 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
-
Aggiornare il file di configurazione
.magento.app.yaml
.code language-yaml relationships: database: "mysql:mysql" redis: "redis:redis" redis-session: "redis-session:redis" # Relationship of the new Redis instance search: "search:elasticsearch" rabbitmq: "rabbitmq:rabbitmq"
-
Invia un ticket di supporto Adobe Commerce per richiedere il provisioning di una nuova istanza Redis dedicata alle sessioni negli ambienti di produzione e staging. Includere i file di configurazione
.magento/services.yaml
e.magento.app.yaml
aggiornati. Questo non causerà tempi di inattività, ma richiede una distribuzione per attivare il nuovo servizio. -
Verifica che la nuova istanza sia in esecuzione e annota il numero di porta.
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
-
Aggiungere il numero di porta al file di configurazione
.magento.env.yaml
.note note NOTE disable_locking
deve essere impostato su1
.code language-yaml SESSION_CONFIGURATION: _merge: true redis: port: 6374 # check the port in $MAGENTO_CLOUD_RELATIONSHIPS timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60
-
Rimuovere le sessioni dal database predefinito (
db 0
) nell'istanza della cache Redis.code language-bash redis-cli -h 127.0.0.1 -p 6374 -n 0 FLUSHDB
Durante la distribuzione, nel registro build e distribuzione dovrebbero essere visualizzate le righe seguenti:
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
Compressione cache
Se si utilizzano più di 6 GB di Redis maxmemory
, è possibile utilizzare la compressione della cache per ridurre lo spazio utilizzato dalle chiavi. Tieni presente che esiste un compromesso con le prestazioni lato client. Se si dispone di CPU di riserva, attivarle. Vedere Utilizzare Redis per l'archiviazione della sessione nella Guida alla configurazione.
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%)