Prácticas recomendadas para la configuración del servicio Valkey y Redis
Utilice estas recomendaciones cuando configure Redis o Valkey para la caché de aplicaciones de Adobe Commerce, el almacenamiento de sesión y la caché L2 para implementaciones de Adobe Commerce en la nube.
Para la configuración de caché local de Adobe Commerce, consulte Configuración de caché L2 para la optimización del rendimiento.
Estas recomendaciones abarcan lo siguiente:
- Seleccione un servicio de caché admitido
- Habilitar conexión de réplica
- Instancias de caché y sesión independientes
- Configuración de compresión de caché
- Habilitar la liberación asincrónica
- Habilitar E/S multiproceso
- Aumentar los tiempos de espera y reintentos del cliente
- Configurar la caché L2, incluidas las claves de precarga, la caché obsoleta y la caché L2 Symfony
- Revisar ejemplos de configuración
Seleccione un servicio de caché admitido
Redis no es compatible con la configuración de caché en Adobe Commerce 2.4.9 y en las versiones de parches, donde los requisitos del sistema especifican Valkey en su lugar. Compruebe siempre la versión exacta de Commerce, el nivel de parche y la versión del servicio en las opciones de servidor de caché y referencia de almacenamiento y en los requisitos del sistema.
ece-tools. Si no es así, actualice a la versión más reciente. Puede comprobar la versión instalada en su entorno local mediante el comando CLI composer show magento/ece-tools.Habilitar conexión de réplica
Habilite la conexión de réplica en el archivo .magento.env.yaml. Este cambio permite a Adobe Commerce utilizar una conexión de caché adicional para las lecturas mientras sigue utilizando el extremo principal para las escrituras. Esta configuración puede reducir la carga de lectura en el servicio de caché principal y distribuir el tráfico de lectura de forma más eficaz.
ece-tools. Antes de confiar en esta configuración, confirme que existe una relación de réplica para su servicio ejecutando echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp y comprobando si hay una entrada USE_SLAVE_CONNECTION. Para confirmar si la topología aprovisiona un extremo de réplica, actualice ece-tools y vuelva a implementar, o póngase en contacto con el soporte técnico de Adobe Commerce si no hay ninguna entrada USE_SLAVE_CONNECTION.symfony_l2, la compatibilidad con la conexión de réplica se entrega a través de una actualización de ece-tools y Cloud Patches. No se requiere ninguna configuración de caché adicional más allá de cambiar VALKEY_USE_SLAVE_CONNECTION: true. Actualice a la última versión de ece-tools para recibir la corrección.Para Valkey, utilice:
| code language-yaml |
|---|
|
Para obtener detalles de configuración de la variable de entorno, consulte VALKEY USE SLAVE_CONNECTION en la Guía de infraestructura de Commerce en la nube.
Para Redis, utilice:
| code language-yaml |
|---|
|
Para obtener detalles sobre la configuración de la variable de entorno, consulte REDIS USE SLAVE_CONNECTION en la Guía de infraestructura de Commerce en la nube.
Instancias de caché y sesión independientes
La configuración de caché y sesión es independiente. SESSION_CONFIGURATION no afecta al comportamiento de la caché, independientemente del backend de la caché o de la implementación de caché L2 que utilice. La separación de la caché de las sesiones permite administrarlas de forma independiente. Reduce la contención entre la caché y el tráfico de sesión, evita que la presión relacionada con la caché afecte a las sesiones y permite que cada instancia de Redis o Valkey tenga un tamaño y un ajuste para su propia carga de trabajo.
.magento/services.yaml y .magento.app.yaml actualizados, tal como se describe en el paso 3 a continuación.Para aprovisionar una instancia dedicada para las sesiones, siga los pasos a continuación:
-
Actualice el archivo de configuración
.magento/services.yamly reemplace<version>por las versiones de servicio que está usando. Consulte Requisitos del sistema para ver las versiones de servicio compatibles por versión.code language-yaml mysql: type: mysql:<version> disk: 35000 valkey: type: valkey:<version> valkey-session: # This is for the new Valkey instance type: valkey:<version> search: type: elasticsearch:<version> disk: 5000 rabbitmq: type: rabbitmq:<version> disk: 2048 -
Actualizar el archivo de configuración
.magento.app.yaml.code language-yaml relationships: database: "mysql:mysql" valkey: "valkey:valkey" valkey-session: "valkey-session:valkey" # Relationship of the new Valkey instance search: "search:elasticsearch" rabbitmq: "rabbitmq:rabbitmq" -
Solicite una nueva instancia de Valkey dedicada a sesiones en entornos de producción y ensayo.
Enviar un ticket de soporte de Adobe Commerce. Incluir los archivos de configuración actualizados de
.magento/services.yamly.magento.app.yaml.Esta actualización no provoca ningún tiempo de inactividad, pero requiere una implementación para activar el nuevo servicio.
-
Compruebe que la nueva instancia se esté ejecutando y anote el número de puerto.
code language-shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp -
Agregue el número de puerto al archivo de configuración
.magento.env.yaml.note important IMPORTANT Configure el puerto de sesión de Valkey solo si ece-toolsno puede detectarlo automáticamente desde la definición del servicio de sesión de ValkeyMAGENTO_CLOUD_RELATIONSHIPS.note NOTE Establezca disable_lockingen1para obtener el mejor rendimiento. En casos excepcionales en los que se producen condiciones de carrera debido a una alta actividad de sesión simultánea, establézcala en0para habilitar el bloqueo.code language-yaml SESSION_CONFIGURATION: _merge: true redis: # keep 'redis' even if you are using Valkey. timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60 -
Elimine sesiones de la base de datos predeterminada (
db 0) en la instancia de caché de Valkey.code language-terminal valkey-cli -h 127.0.0.1 -p 6370 -n 0 FLUSHDB
-
Actualice el archivo de configuración
.magento/services.yamly reemplace<version>por las versiones de servicio que está usando.code language-yaml mysql: type: mysql:<version> disk: 35000 redis: type: redis:<version> redis-session: # This is for the new Redis instance type: redis:<version> search: type: elasticsearch:<version> disk: 5000 rabbitmq: type: rabbitmq:<version> disk: 2048 -
Actualizar el archivo de configuración
.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" -
Solicite una nueva instancia de Redis dedicada a sesiones en entornos de producción y ensayo.
Enviar un ticket de soporte de Adobe Commerce. Incluir los archivos de configuración actualizados de
.magento/services.yamly.magento.app.yaml.Esta actualización no provoca ningún tiempo de inactividad, pero requiere una implementación para activar el nuevo servicio.
-
Compruebe que la nueva instancia se esté ejecutando y anote el número de puerto.
code language-shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp -
Agregue el número de puerto al archivo de configuración
.magento.env.yaml.note important IMPORTANT Configure el puerto de sesión de Redis solo si ece-toolsno puede detectarlo automáticamente a partir de la definición del servicio de sesión deMAGENTO_CLOUD_RELATIONSHIPSRedis.note NOTE Establezca disable_lockingen1para obtener el mejor rendimiento. En casos excepcionales en los que se producen condiciones de carrera debido a una alta actividad de sesión simultánea, establézcala en0para habilitar el bloqueo.code language-yaml SESSION_CONFIGURATION: _merge: true redis: timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60 -
Quitar sesiones de la base de datos predeterminada (
db 0) en la instancia de caché de Redis.code language-terminal redis-cli -h 127.0.0.1 -p 6370 -n 0 FLUSHDB
Compresión de caché
Si usa más de 6 GB de Redis o Valkey maxmemory, puede habilitar la compresión de caché para reducir el espacio consumido por las claves. Tenga en cuenta que esta configuración cambia el rendimiento del lado del cliente por ahorros de memoria. Si tiene capacidad de CPU disponible, considere la posibilidad de habilitarla. Consulte Usar Redis para almacenamiento de sesión o Usar Valkey para almacenamiento de sesión en la Guía de configuración.
stage:
deploy:
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%)
Habilitar la liberación asincrónica
Para habilitar lazyfree en la infraestructura de nube de Adobe Commerce, envíe un ticket de soporte de Adobe Commerce en el que se solicite que se aplique la siguiente configuración de Redis o Valkey a sus entornos:
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
replica-lazy-flush yes
lazyfree-lazy-user-del yes
Cuando lazyfree está habilitado, Redis o Valkey descargan la reclamación de memoria a subprocesos en segundo plano para expulsiones, caducidades, eliminaciones iniciadas por el servidor, eliminaciones de usuarios y vaciados del conjunto de datos de réplica. Esto reduce el bloqueo de subprocesos principales y puede reducir la latencia de las solicitudes.
lazyfree-lazy-user-del yes hace que el comando DEL se comporte como UNLINK, lo que desvincula las claves inmediatamente y libera su memoria de forma asincrónica.Habilitar E/S multiproceso
Para habilitar el subprocesamiento de E/S de Redis en la infraestructura de nube de Adobe Commerce, envíe un ticket de soporte de Adobe Commerce solicitando la configuración de subprocesamiento de E/S a continuación. Esta configuración puede mejorar el rendimiento descargando lecturas de socket, escrituras y análisis de comandos desde el hilo principal, a costa de un mayor uso de CPU. Valide en y supervise sus hosts.
Para Redis:
| code language-text |
|---|
|
Para Valkey:
| code language-text |
|---|
|
io-threads o deshabilite las lecturas en los subprocesos de E/S.Aumentar los tiempos de espera y reintentos del cliente
Aumente la tolerancia del cliente de caché de Redis o Valkey a periodos de saturación cortos ajustando las opciones del servidor en .magento.env.yaml.
stage:
deploy:
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
connect_retries: 3 # Number of connection retries
remote_backend_options:
read_timeout: 10 # Timeout
Esta configuración puede reducir los errores intermitentes de conexión y tiempo de espera de lectura durante picos cortos al reintentar la configuración de la conexión y permitir más tiempo para las respuestas de Redis o Valkey.
Configuración de la caché L2
Configure la caché L2 estableciendo la variable de implementación VALKEY_BACKEND o REDIS_BACKEND en el archivo de configuración .magento.env.yaml.
Hay dos implementaciones de caché L2 disponibles para Adobe Commerce en la infraestructura en la nube.
- La implementación heredada usa
RemoteSynchronizedCacheconCm_Cache_Backend_Filepara el almacenamiento local - La implementación moderna usa
symfony_l2con compatibilidad con PSR-6 y rendimiento mejorado. La implementación moderna solo admite Valkey.
(si se admite Valkey)
VALKEY_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'VALKEY_BACKEND: 'symfony_l2'En Commerce 2.4.8 y versiones anteriores compatibles con Valkey, utilice esta configuración:
| code language-yaml |
|---|
|
En Commerce 2.4.9 y versiones posteriores, utilice la siguiente configuración con la implementación de L2 Symfony:
| code language-yaml |
|---|
|
En la versión 2.4.8 y versiones anteriores de Commerce compatibles con Redis, utilice:
| code language-yaml |
|---|
|
Para obtener detalles de configuración del entorno, consulte REDIS_BACKEND en la Guía de infraestructura de Commerce en la nube.
Migrar a Valkey con caché L2 de Symfony
Si está migrando un proyecto existente de Adobe Commerce en la nube de RemoteSynchronizedCache (Redis o Valkey) a symfony_l2, revise lo siguiente antes de actualizar .magento.env.yaml.
-
Cambiar la variable de implementación es suficiente para habilitar
symfony_l2. Al establecerVALKEY_BACKEND: symfony_l2solo, se genera automáticamente la configuración de caché L2 completa. No necesita volver a crear manualmente la estructura debackend_optionsque utilizó la configuración anterior deRemoteSynchronizedCache. Consulte Configurar Symfony caché L2. -
Quitar
preload_keysde la configuración existente. Si la configuración deRemoteSynchronizedCacheincluyepreload_keysenCACHE_CONFIGURATION, elimínelo como parte de la migración. Consulte Claves de precarga para obtener más información. -
El comportamiento de la caché obsoleta cambia automáticamente. En
symfony_l2,ece-toolshabilita automáticamente la caché obsoleta para los tipos de caché comunes (comolayout,block_html,full_pageytranslate) sin requerir la configuración de front-end manual queRemoteSynchronizedCachenecesitaba. Si anteriormente configuró manualmente la caché obsoleta y desea conservar el comportamiento anterior exacto, revise Habilitar la caché obsoleta antes de migrar. -
La compresión requiere un indicador explícito. Si personaliza la compresión de
symfony_l2medianteCACHE_CONFIGURATION, la configuración decompression_libpor sí sola no habilita la compresión:compress_datatambién debe estar establecida. Consulte Compresión de caché. -
Redis no es un servidor remoto compatible para
symfony_l2. Migre a Valkey como parte de este cambio. Consulte Configurar el servicio Valkey. -
La configuración de sesión no se ve afectada por esta migración.
SESSION_CONFIGURATIONes independiente del servidor de caché y no necesita cambiarse al pasar asymfony_l2. Consulte Separar caché e instancias de sesión.
symfony_l2 manualmente en app/etc/env.php. Configúrelo a través de .magento.env.yaml, de modo que ece-tools aplique y mantenga la configuración durante la implementación. Consulte Configurar Symfony caché L2.Precargar claves
Las claves de precarga se pueden aplicar a una configuración de symfony_l2 si usa la ubicación correcta (en backend_options o remote_backend_options). Sin embargo, Adobe no recomienda utilizar claves de precarga con symfony_l2. La implementación de precarga de symfony_l2 recupera las claves de una en una, de modo que no reduce los viajes de ida y vuelta como lo hace para RemoteSynchronizedCache y puede aumentar la carga en Valkey sin una ventaja de rendimiento.
La función de precarga permite proporcionar una lista de las claves utilizadas frecuentemente que Magento recupera en una sola canalización en el primer acceso durante una solicitud. A continuación, Magento mantiene los valores recuperados en la memoria PHP durante el resto de esa solicitud, lo que reduce los viajes de ida y vuelta repetidos a Redis o Valkey y puede mejorar el rendimiento de arranque de la solicitud para esas claves.
Puede identificar las claves utilizadas con frecuencia controlando los comandos activos en Redis o Valkey:
Las claves de precarga están configuradas en el archivo de configuración .magento.env.yaml. Este ejemplo muestra la configuración de Adobe Commerce 2.4.8 y versiones anteriores compatibles con RemoteSynchronizedCache.
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
id_prefix: '061_' # Prefix for keys to be preloaded, it can be any random string
backend_options:
preload_keys: # List the keys to be preloaded
- '061_EAV_ENTITY_TYPES:hash' # The key name must start with the id_prefix set above
- '061_GLOBAL_PLUGIN_LIST:hash'
- '061_DB_IS_UP_TO_DATE:hash'
- '061_SYSTEM_DEFAULT:hash'
Para enumerar las claves, ejecute el siguiente comando:
redis-cli -p 6370 -n 1 MONITOR > /tmp/list.keys
Después de 10 segundos, presione Ctrl+C. A continuación, ejecute el siguiente comando:
cat /tmp/list.keys | grep "HGET" | awk '{print $5}' | sort | uniq -c | sort -nr | head -n 50
Este registro enumera las claves que puede cargar previamente. Para ver el contenido de una clave, ejecute el siguiente comando:
redis-cli -p 6370 -n 1 hgetall "<key_name>"
Habilitar caché obsoleta
La caché obsoleta es una característica de caché L2 que permite a Adobe Commerce servir un valor de caché local existente de /dev/shm mientras otra solicitud ya está regenerando la misma entrada. Esto evita que las solicitudes simultáneas esperen. Esto reduce las estampidas de caché y la contención de bloqueos durante la regeneración de entradas de caché costosas.
Para Adobe Commerce 2.4.9 y versiones posteriores, establezca VALKEY_BACKEND: symfony_l2 en el archivo .magento.env.yaml:
stage:
deploy:
VALKEY_BACKEND: symfony_l2
ece-tools genera automáticamente un front-end default y stale_cache_enabled, y asigna los siguientes tipos de caché al front-end habilitado para obsoleto: layout, block_html, reflection, config_integration, config_integration_api, full_page y translate. No se requiere ninguna configuración manual de use_stale_cache o de front-end para estos tipos. Esta asignación automática es en sí misma un ejemplo de habilitación selectiva de caché obsoleta. Solo los tipos de caché específicos utilizan el front-end habilitado para obsoletos, no todos ellos. Para personalizar qué tipos se asignan a stale_cache_enabled o para agregar tipos más allá de los valores predeterminados, vea Personalizar la Symfony configuración de la caché L2.
full_page no es relevante para Adobe Commerce en proyectos de infraestructura en la nube porque utiliza Fastly para el almacenamiento en caché de página completa. Los ejemplos de configuración manual de esta sección omiten full_page por ese motivo, aunque ece-tools lo incluya en la asignación predeterminada symfony_l2.La siguiente configuración heredada se aplica a Adobe Commerce 2.4.8 y versiones anteriores, que utilizan RemoteSynchronizedCache y requieren una caché anticuada manual y una configuración de front-end. La misma recomendación selectiva sobre global se aplica aquí.
Cómo funciona el servidor remotoSynchronizedCache heredado
Con RemoteSynchronizedCache, Magento mantiene dos copias de cada entrada de caché: una copia local en /dev/shm y una copia remota en Redis o Valkey. Cuando la copia remota no está disponible y ya existe un bloqueo de regeneración para esa clave, las solicitudes simultáneas pueden recibir el valor local anterior en lugar de esperar hasta que se escriba el nuevo valor.
Para habilitar la caché obsoleta para 2.4.8 y versiones anteriores, configúrela en el archivo .magento.env.yaml.
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
use_stale_cache: true
default, que aplica el comportamiento de caché obsoleta a todas las entradas de caché que utilizan ese front-end. Los tipos de caché principal de Magento funcionan según lo esperado con esta configuración. Sin embargo, si el proyecto incluye código personalizado o extensiones que escriben en la caché a través de la API genérica \Magento\Framework\App\Cache (por ejemplo $this->cache->save()) sin un front-end de caché dedicado, esas entradas también pueden proporcionar valores antiguos durante la regeneración.default y actívela solo para los tipos de caché seleccionados, como se muestra a continuación.Habilitar la caché obsoleta por tipo de caché individualmente (heredado)
Puede habilitar la caché obsoleta solamente para los tipos de caché seleccionados definiendo un front-end de caché dedicado en .magento.env.yaml y asignando los tipos de caché seleccionados a él. Este método manual se aplica al back-end RemoteSynchronizedCache heredado; symfony_l2 realiza esta asignación automáticamente, tal como se ha descrito anteriormente.
Para funcionar correctamente, el front-end personalizado debe definirse como un front-end completo en CACHE_CONFIGURATION.frontend. No basta con definir solo use_stale_cache: true para un nuevo nombre de front-end.
Configuraciones de ejemplo
En el caso de Redis en las versiones 2.4.8 y anteriores, la siguiente configuración habilita la caché obsoleta para los tipos de caché layout, reflection, config_integration, config_integration_api y translate, mientras que deja otros tipos de caché con el front-end predeterminado deshabilitado:
stage:
deploy:
REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
CACHE_CONFIGURATION:
_merge: true
frontend:
default: # In this frontend, we keep stale cache set to false.
id_prefix: '001_'
backend_options:
use_stale_cache: false
# Now, create a new frontend called 'stale_cache_enabled'.
# It must contain the same backend connection settings as the frontend 'default':
stale_cache_enabled:
id_prefix: '001_'
backend: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
backend_options:
remote_backend: '\Magento\Framework\Cache\Backend\Redis'
remote_backend_options:
server: localhost
port: 6370 # Use the same port used by the frontend 'default' in env.php
database: 1
load_from_slave:
server: localhost
port: 26370 # Use the same port used by the frontend 'default' in env.php
retry_reads_on_master: 1
read_timeout: 10
local_backend: 'Cm_Cache_Backend_File'
local_backend_options:
cache_dir: /dev/shm/
use_stale_cache: true # stale cache here is enabled
# Now select which cache types you want to enable (stale_cache_enabled), or disable (default)
type:
default:
frontend: default
layout:
frontend: stale_cache_enabled
reflection:
frontend: stale_cache_enabled
config_integration:
frontend: stale_cache_enabled
config_integration_api:
frontend: stale_cache_enabled
translate:
frontend: stale_cache_enabled
# add other cache types as needed...
stale_cache_enabled para que el nuevo front-end mantenga el mismo comportamiento.Configurar la caché L2 de Symfony
Adobe Commerce 2.4.9 y versiones posteriores admiten el back-end de caché symfony_l2. El servidor symfony_l2 es la implementación de caché que Adobe Commerce usa para administrar el comportamiento de la caché L1 y L2. No reemplaza a Redis ni a Valkey como servicio de caché remota.
symfony_l2 mediante la variable de implementación .magento.env.yaml, de modo que ece-tools aplique y mantenga la configuración durante la implementación. No configure symfony_l2 manualmente en app/etc/env.php, ya que la implementación puede sobrescribir los cambios manuales de env.php. Si ece-tools no aplica symfony_l2, Commerce puede volver a la caché basada en archivos, lo que puede aumentar la E/S del disco, agregar sobrecarga de replicación del sistema de archivos en entornos de varios nodos y degradar el rendimiento.Para usar la caché de symfony_l2 en Adobe Commerce 2.4.9, complete estos pasos:
-
Asegúrese de que el proyecto de nube esté usando el paquete v2002.2.12🔗 de
ece-toolso posterior. -
Establezca la variable de implementación en el archivo
.magento.env.yaml:VALKEY_BACKEND=symfony_l2.code language-yaml stage: deploy: VALKEY_BACKEND: symfony_l2
Al establecer la variable de implementación VALKEY_BACKEND en symfony_l2, se genera automáticamente la configuración de caché L2 completa a partir de los detalles de conexión del servicio Valkey, incluidos los front-end default y stale_cache_enabled, con los tipos de caché comunes ya asignados. La definición de CACHE_CONFIGURATION es opcional y necesaria solamente si desea personalizar opciones específicas del servidor.
cleanup_percentage). Esto reduce la E/S del disco y la carga back-end al tiempo que mejora la coherencia de la caché. Consulte Rendimiento y fiabilidad mejorados de la caché Symfony L2 en la Guía de configuración de Adobe Commerce.ece-tools) y se aplica automáticamente durante la implementación al actualizar a la última versión de ece-tools. Actualice a la última versión de ece-tools para recibir el parche.Personalizar la configuración de caché L2 de Symfony
ece-tools deriva automáticamente los detalles de conexión de Valkey (server, port, database, serializer, compression_lib, persistent_id) para los front-end default y stale_cache_enabled. Para personalizar otras opciones de servidor, como el directorio de caché local, defina CACHE_CONFIGURATION con _merge: true junto con VALKEY_BACKEND: symfony_l2. Los valores que defina aquí anulan los valores predeterminados generados automáticamente; cualquier opción que omita seguirá utilizando los valores que ece-tools deriva automáticamente.
stage:
deploy:
VALKEY_BACKEND: symfony_l2
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
remote_backend: valkey
local_backend: file
local_backend_options:
cache_dir: /dev/shm/magento_l1
stale_cache_enabled:
backend: symfony_l2
backend_options:
remote_backend: valkey
local_backend: file
local_backend_options:
cache_dir: /dev/shm/magento_l1_stale
use_stale_cache: true
CACHE_CONFIGURATION para symfony_l2, solo invalide server o port si señala intencionalmente a un extremo de caché que no sea el servicio Valkey del proyecto. El paquete ece-tools deriva estos valores automáticamente de su relación de servicio de Valkey.server, su valor debe ser localhost al conectarse al servicio Valkey del proyecto. Si se proporciona un valor server o port incorrecto, la implementación fallará y se producirá un error de conexión de caché.Tamaño de la memoria caché L2 para Adobe Commerce Cloud
La caché L2 usa un sistema de archivos temporal (/dev/shm) como mecanismo de almacenamiento. A diferencia de los almacenes de valor clave especializados, los tmpfs no tienen una política de desalojo de claves, por lo que el uso de la memoria puede crecer sin límites. Para evitar el agotamiento, Adobe Commerce borra automáticamente el almacenamiento L2 cuando el uso alcanza un umbral configurable (95 % de forma predeterminada). Puede controlar el consumo de memoria solicitando un montaje de /dev/shm mayor o reduciendo el umbral de limpieza.
Ajuste el uso máximo de memoria caché L2 en función de los requisitos del proyecto. Utilice uno de los siguientes métodos:
- Para ajustar el tamaño de montaje de
/dev/shm, cree un vale de soporte. En este caso, Adobe recomienda establecer el tamaño de montaje de/dev/shmen 15 GB. - Ajuste la propiedad
cleanup_percentageen el nivel de aplicación para limitar el uso del almacenamiento y la memoria libre disponible para otros servicios.
Puede ajustar la configuración en la configuración de implementación en el grupo de configuración de cachécache/frontend/default/backend_options/cleanup_percentage.
cleanup_percentage se introdujo en Adobe Commerce 2.4.4.Los siguientes ejemplos muestran el código de configuración en el archivo .magento.env.yaml:
Para Commerce 2.4.9 y versiones posteriores, utilice la siguiente configuración para establecer el umbral de limpieza en 90 %:
| code language-yaml |
|---|
|
Para Commerce 2.4.8 y versiones anteriores, utilice la siguiente configuración para establecer el umbral de limpieza en 90 %:
| code language-yaml |
|---|
|
Los requisitos de caché varían en función de la configuración del proyecto y del código de terceros personalizado. Tamaño de la memoria caché L2 para que la caché pueda funcionar sin visitas de umbral frecuentes.
Lo ideal es que el uso de la memoria caché L2 se estabilice por debajo del umbral para evitar la limpieza frecuente del almacenamiento.
Puede comprobar el uso de la memoria de almacenamiento en caché L2 en cada nodo del clúster ejecutando el siguiente comando CLI y revisando la línea /dev/shm.
df -h /dev/shm
El uso varía según los nodos, pero converge a un valor similar.
Ejemplos de configuración
Utilice los siguientes ejemplos como punto de partida para las configuraciones del servicio Redis o Valkey.
Aplicar todas las recomendaciones de prácticas recomendadas
Para VALKEY_BACKEND: symfony_l2, permita que ece-tools genere los front-end default y stale_cache_enabled y sus asignaciones de tipo de caché. No configure use_stale_cache en el front-end default amplio. El bloque CACHE_CONFIGURATION a continuación contiene solamente invalidaciones explícitas de opciones de backend.
| code language-yaml |
|---|
|
Utilice la siguiente configuración para Redis en Adobe Commerce 2.4.8 y versiones anteriores:
| code language-yaml |
|---|
|
Separar caché obsoleta por tipo de caché
| code language-yaml |
|---|
|
| code language-yaml |
|---|
|