Bonnes pratiques relatives à la configuration du service Redis
- Configuration du cache Redis L2
- Activer la connexion esclave Redis
- Clés de pré-chargement
- Activer le cache obsolète
- Séparez le cache Redis de la session Redis
- Compressez le cache Redis et utilisez
gzip
pour une compression plus élevée.
Configuration du cache Redis L2
Configurez le cache Redis L2 en définissant la variable de déploiement REDIS_BACKEND
dans le fichier de configuration .magento.env.yaml
.
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
Pour connaître la configuration de l’environnement sur l’infrastructure cloud, consultez le REDIS_BACKEND
du Guide de l’infrastructure de Commerce on Cloud.
Pour les installations sur site, voir Configuration de la mise en cache de page Redis dans le Guide de configuration.
ece-tools
. Dans le cas contraire, effectuez une mise à niveau vers la dernière version. Vous pouvez vérifier la version installée dans votre environnement local à l’aide de la commande d’interface de ligne de commande composer show magento/ece-tools
.Taille de la mémoire cache L2 (Adobe Commerce Cloud)
Le cache L2 utilise un système de fichiers temporaire comme mécanisme de stockage. Par rapport aux systèmes de base de données à valeurs de clé spécialisés, un système de fichiers temporaire n’a pas de stratégie d’élimination de clé pour contrôler l’utilisation de la mémoire.
L’absence de contrôle de l’utilisation de la mémoire peut entraîner une augmentation de l’utilisation de la mémoire cache L2 au fil du temps en accumulant le cache obsolète.
Pour éviter l’épuisement de la mémoire des mises en oeuvre du cache L2, Adobe Commerce efface le stockage lorsqu’un certain seuil est atteint. La valeur de seuil par défaut est de 95 %.
Il est important d’ajuster l’utilisation maximale de la mémoire cache L2 en fonction des exigences du projet pour le stockage du cache. Utilisez l’une des méthodes suivantes pour configurer le dimensionnement du cache mémoire :
- Créez un ticket de support pour demander des modifications de taille du montage
/dev/shm
. - Réglez la propriété
cleanup_percentage
au niveau de l’application pour limiter le pourcentage de remplissage maximal du stockage. La mémoire libre restante peut être utilisée par d’autres services.
Vous pouvez ajuster la configuration dans la configuration du déploiement sous le groupe de configuration du cachecache/frontend/default/backend_options/cleanup_percentage
.
cleanup_percentage
a été introduite dans Adobe Commerce 2.4.4.Le code suivant illustre un exemple de configuration dans le fichier .magento.env.yaml
:
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
cleanup_percentage: 90
Les exigences de cache peuvent varier en fonction de la configuration du projet et du code tiers personnalisé. La portée du dimensionnement de la mémoire cache L2 permet au cache L2 de fonctionner sans trop d’accès de seuil.
Idéalement, l’utilisation de la mémoire cache L2 doit se stabiliser à un certain niveau en dessous du seuil, simplement pour éviter un nettoyage fréquent du stockage.
Vous pouvez vérifier l’utilisation de la mémoire de stockage du cache L2 sur chaque noeud de la grappe à l’aide de la commande d’interface de ligne de commande suivante et en recherchant la ligne /dev/shm
.
L’utilisation peut varier d’un noeud à l’autre, mais elle doit converger vers la même valeur.
df -h
Activer la connexion esclave Redis
Activez une connexion esclave Redis dans le fichier de configuration .magento.env.yaml
pour n’autoriser qu’un seul noeud à gérer le trafic lecture-écriture, tandis que les autres noeuds traitent le trafic en lecture seule.
stage:
deploy:
REDIS_USE_SLAVE_CONNECTION: true
Voir REDIS_USE_SLAVE_CONNECTION dans le Guide d’infrastructure de Commerce on Cloud.
Pour les installations Adobe Commerce sur site, configurez la nouvelle mise en oeuvre du cache Redis à l’aide des commandes bin/magento:setup
. Voir Utiliser des Redis pour le cache par défaut dans le Guide de configuration.
Clés de pré-chargement
Pour réutiliser les données entre les pages, listez les clés à précharger dans le fichier de configuration .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'
Pour les installations sur site, voir Redis preload feature dans le Guide de configuration.
Activer le cache obsolète
Réduisez les temps d’attente de verrouillage et améliorez les performances, en particulier lorsque vous gérez de nombreux blocs et clés de cache, en utilisant un cache obsolète tout en générant un nouveau cache en parallèle. Activez le cache obsolète et définissez les types de cache dans le fichier de configuration .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
n’est pas pertinent pour Adobe Commerce sur les projets d’infrastructure cloud, car ils utilisent Fastly.Pour configurer les installations sur site, reportez-vous à la section Options de cache obsolètes du Guide de configuration.
Séparation du cache Redis et des instances de session
La séparation du cache Redis de la session Redis vous permet de gérer le cache et les sessions indépendamment. Cela empêche les problèmes de cache d’affecter les sessions, ce qui peut avoir un impact sur les recettes. Chaque instance Redis s’exécute sur son propre coeur, ce qui améliore les performances.
-
Mettez à jour le fichier de configuration
.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
-
Mettez à jour le fichier de configuration
.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"
-
Envoyez un ticket d’assistance Adobe Commerce pour demander l’approvisionnement d’une nouvelle instance Redis dédiée aux sessions sur les environnements de production et d’évaluation. Incluez les fichiers de configuration
.magento/services.yaml
et.magento.app.yaml
mis à jour. Cela ne provoquera pas de temps d’arrêt, mais nécessite un déploiement pour activer le nouveau service. -
Vérifiez que la nouvelle instance est en cours d’exécution et notez le numéro de port.
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
-
Ajoutez le numéro de port au fichier de configuration
.magento.env.yaml
.note note NOTE disable_locking
doit être défini sur1
.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
-
Supprimez les sessions de la base de données par défaut (
db 0
) sur l’instance de cache Redis.code language-bash redis-cli -h 127.0.0.1 -p 6374 -n 0 FLUSHDB
Pendant le déploiement, les lignes suivantes doivent s’afficher dans le journal de création et de déploiement :
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
Compression du cache
Si vous utilisez plus de 6 Go de Redis maxmemory
, vous pouvez utiliser la compression du cache pour réduire l’espace consommé par les clés. Gardez à l’esprit qu’il existe un compromis entre les performances côté client. Si vous avez des unités centrales de secours, activez-le. Reportez-vous à la section Utilisation de Redis pour le stockage de session dans le Guide de configuration.
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%)