Práticas recomendadas para a configuração do serviço Valkey e Redis
Use essas recomendações ao configurar o Redis ou o Valkey para o cache de aplicativos do Adobe Commerce, armazenamento de sessão e cache L2 para o Adobe Commerce em implantações de nuvem.
Para obter a configuração do cache local do Adobe Commerce, consulte Configuração do cache L2 para otimização de desempenho.
Essas recomendações abrangem o seguinte:
- Selecionar um serviço de cache com suporte
- Habilitar conexão de réplica
- Instâncias separadas de cache e sessão
- Configurar compactação de cache
- Habilitar liberação assíncrona
- Habilitar E/S multithread
- Aumentar tempos limite e tentativas do cliente
- Configure o cache L2, incluindo chaves de pré-carregamento, cache obsoleto e cache L2 Symfony
- Revisar exemplos de configuração
Selecionar um serviço de cache com suporte
O Redis não é compatível com a configuração de cache no Adobe Commerce 2.4.9 e em versões de patch em que os requisitos do sistema especificam Valkey. Sempre verifique a versão exata do Commerce, o nível de patch e a versão do serviço nas Opções de back-end do cache e referência de armazenamento e Requisitos do sistema.
ece-tools. Caso contrário, atualize para a versão mais recente. Você pode verificar a versão instalada em seu ambiente local usando o comando da CLI do composer show magento/ece-tools.Habilitar conexão de réplica
Habilite a conexão de réplica no arquivo .magento.env.yaml. Essa alteração permite que o Adobe Commerce use uma conexão de cache adicional para leituras, enquanto continua usando o endpoint principal para gravações. Essa configuração pode reduzir a carga de leitura no serviço de cache principal e distribuir o tráfego de leitura com mais eficiência.
ece-tools. Antes de confiar nessa configuração, confirme se existe uma relação de réplica para o serviço executando o echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp e verificando se há uma entrada USE_SLAVE_CONNECTION. Para confirmar se sua topologia provisiona um ponto de extremidade de réplica, atualize o ece-tools e reimplante ou entre em contato com o Suporte da Adobe Commerce se nenhuma entrada USE_SLAVE_CONNECTION estiver presente.symfony_l2, o suporte à conexão de réplica é fornecido por meio de uma atualização de ece-tools e Cloud Patches. Nenhuma configuração de cache adicional é necessária além da alteração de VALKEY_USE_SLAVE_CONNECTION: true. Atualize para a versão mais recente do ece-tools para receber a correção.Para Valkey, use:
| code language-yaml |
|---|
|
Para obter detalhes sobre a configuração da variável de ambiente, consulte VALKEY USE SLAVE_CONNECTION no Guia de Infraestrutura do Commerce na Nuvem.
Para Redis, use:
| code language-yaml |
|---|
|
Para obter detalhes sobre a configuração da variável de ambiente, consulte REDIS USE SLAVE_CONNECTION no Guia de Infraestrutura do Commerce na Nuvem.
Instâncias separadas de cache e sessão
A configuração de cache e sessão é independente. SESSION_CONFIGURATION não afeta o comportamento do cache, independentemente de qual back-end de cache ou implementação de cache L2 você usa. Separar o cache das sessões permite que você as gerencie independentemente. Ele reduz a contenção entre o cache e o tráfego da sessão, impede que a pressão relacionada ao cache afete as sessões e permite que cada instância Redis ou Valkey seja dimensionada e ajustada para sua própria carga de trabalho.
.magento/services.yaml e .magento.app.yaml atualizados, conforme descrito na etapa 3 abaixo.Para provisionar uma instância dedicada para sessões, siga as etapas abaixo:
-
Atualize o arquivo de configuração
.magento/services.yaml, substituindo<version>pelas versões de serviço que você está usando. Consulte Requisitos do sistema para obter as versões do serviço com suporte por versão.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 -
Atualize o arquivo de configuração
.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 uma nova instância do Valkey dedicada às sessões nos ambientes de Produção e Preparo.
Envie um tíquete de Suporte da Adobe Commerce. Inclua os arquivos de configuração
.magento/services.yamle.magento.app.yamlatualizados.Essa atualização não causa tempo de inatividade, mas requer uma implantação para ativar o novo serviço.
-
Verifique se a nova instância está em execução e observe o número da porta.
code language-shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp -
Adicione o número da porta ao arquivo de configuração
.magento.env.yaml.note important IMPORTANT Configure a porta da sessão Valkey apenas se ece-toolsnão puder detectá-la automaticamente a partir da definição do serviço de sessão ValkeyMAGENTO_CLOUD_RELATIONSHIPS.note NOTE Defina disable_lockingcomo1para obter o melhor desempenho. Em casos raros em que as condições de corrida ocorrem devido à alta atividade de sessão simultânea, defina como0para habilitar o bloqueio.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 -
Remover sessões do banco de dados padrão (
db 0) na instância de cache Valkey.code language-terminal valkey-cli -h 127.0.0.1 -p 6370 -n 0 FLUSHDB
-
Atualize o arquivo de configuração
.magento/services.yaml, substituindo<version>pelas versões de serviço que você 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 -
Atualize o arquivo de configuração
.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 uma nova instância de Redis dedicada às sessões nos ambientes de produção e preparo.
Envie um tíquete de Suporte da Adobe Commerce. Inclua os arquivos de configuração
.magento/services.yamle.magento.app.yamlatualizados.Essa atualização não causa tempo de inatividade, mas requer uma implantação para ativar o novo serviço.
-
Verifique se a nova instância está em execução e observe o número da porta.
code language-shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp -
Adicione o número da porta ao arquivo de configuração
.magento.env.yaml.note important IMPORTANT Configure a porta da sessão Redis somente se ece-toolsnão puder detectá-la automaticamente na definição do serviço de sessão RedisMAGENTO_CLOUD_RELATIONSHIPS.note NOTE Defina disable_lockingcomo1para obter o melhor desempenho. Em casos raros em que as condições de corrida ocorrem devido à alta atividade de sessão simultânea, defina como0para habilitar o bloqueio.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 -
Remover sessões do banco de dados padrão (
db 0) na instância de cache Redis.code language-terminal redis-cli -h 127.0.0.1 -p 6370 -n 0 FLUSHDB
Compactação de cache
Se você usar mais de 6 GB de Redis ou Valkey maxmemory, poderá habilitar a compactação de cache para reduzir o espaço consumido pelas chaves. Observe que essa configuração troca o desempenho do lado do cliente pela economia de memória. Se você tiver capacidade extra do CPU, considere ativá-la. Consulte Usar Redis para armazenamento de sessão ou Usar Valkey para armazenamento de sessão no Guia de Configuração.
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 liberação assíncrona
Para habilitar lazyfree na infraestrutura em nuvem da Adobe Commerce, envie um tíquete de Suporte da Adobe Commerce solicitando que a seguinte configuração Redis ou Valkey seja aplicada aos seus ambientes:
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
replica-lazy-flush yes
lazyfree-lazy-user-del yes
Quando lazyfree está habilitado, Redis ou Valkey descarrega a recuperação de memória em threads em segundo plano para remoções, expirações, exclusões iniciadas pelo servidor, exclusões de usuário e liberações de conjunto de dados de réplica. Isso reduz o bloqueio do thread principal e pode reduzir a latência da solicitação.
lazyfree-lazy-user-del yes faz com que o comando DEL se comporte como UNLINK, o que desvincula as chaves imediatamente e libera sua memória de forma assíncrona.Habilitar E/S multithread
Para habilitar a thread de E/S do Redis na infraestrutura em nuvem da Adobe Commerce, envie um tíquete de Suporte da Adobe Commerce solicitando a configuração da thread de E/S abaixo. Essa configuração pode melhorar o throughput descarregando leituras, gravações e análise de comandos do thread principal, ao custo de um maior uso do CPU. Valide o sob o carregamento e monitore seus hosts.
Redis:
| code language-text |
|---|
|
Para Valkey:
| code language-text |
|---|
|
io-threads ou desabilite leituras em threads de E/S.Aumentar tempos limite e tentativas do cliente
Aumente a tolerância do cliente de cache Redis ou Valkey para períodos curtos de saturação ajustando as opções de back-end em .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
Essas configurações podem reduzir erros intermitentes de conexão e tempo limite de leitura durante picos curtos, repetindo a configuração da conexão e permitindo mais tempo para respostas do Redis ou Valkey.
Configurar cache L2
Configure o cache L2 definindo a variável de implantação VALKEY_BACKEND ou REDIS_BACKEND no arquivo de configuração .magento.env.yaml.
Há duas implementações de cache L2 disponíveis para o Adobe Commerce na infraestrutura em nuvem.
- A implementação herdada usa
RemoteSynchronizedCachecomCm_Cache_Backend_Filepara armazenamento local - A implementação moderna usa o
symfony_l2com conformidade com PSR-6 e desempenho aprimorado. A implementação moderna é compatível somente com o Valkey.
(se houver suporte para Valkey)
VALKEY_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'VALKEY_BACKEND: 'symfony_l2'No Commerce 2.4.8 e em versões anteriores que sejam compatíveis com o Valkey, use esta configuração:
| code language-yaml |
|---|
|
No Commerce 2.4.9 e posterior, use a seguinte configuração com a implementação L2 Symfony:
| code language-yaml |
|---|
|
Na versão 2.4.8 e versões anteriores do Commerce que oferecem suporte ao Redis, use:
| code language-yaml |
|---|
|
Para obter detalhes sobre a configuração do ambiente, consulte REDIS_BACKEND no Guia de Infraestrutura do Commerce on Cloud.
Migrar para Valkey com cache L2 Symfony
Se você estiver migrando um projeto existente do Adobe Commerce na Nuvem de RemoteSynchronizedCache (Redis ou Valkey) para symfony_l2, revise o seguinte antes de atualizar .magento.env.yaml.
-
Alterar a variável de implantação é suficiente para habilitar
symfony_l2. A definição deVALKEY_BACKEND: symfony_l2sozinho cria a configuração completa do cache L2 automaticamente. Não é necessário recriar manualmente a estruturabackend_optionsusada pela configuraçãoRemoteSynchronizedCacheanterior. Consulte Configurar Symfony cache L2. -
Remover
preload_keysda sua configuração existente. Se a configuração doRemoteSynchronizedCacheincluirpreload_keysemCACHE_CONFIGURATION, remova-a como parte da migração. Consulte Chaves de pré-carregamento para obter detalhes. -
O comportamento do cache obsoleto muda automaticamente. Em
symfony_l2, oece-toolshabilita automaticamente o cache obsoleto para tipos de cache comuns (comolayout,block_html,full_pageetranslate) sem exigir a configuração de front-end manual necessária para oRemoteSynchronizedCache. Se você configurou o cache obsoleto manualmente e deseja manter o comportamento anterior exato, revise Habilitar cache obsoleto antes de migrar. -
A compactação requer um sinalizador explícito. Se você personalizar a compactação de
symfony_l2atéCACHE_CONFIGURATION, configurar apenascompression_libnão habilitará a compactação —compress_datatambém deve ser definido. Consulte Compactação de cache. -
Redis não é um back-end remoto com suporte para
symfony_l2. Migrar para o Valkey como parte dessa alteração. Consulte Configurar o serviço Valkey. -
A configuração da sessão não é afetada por esta migração.
SESSION_CONFIGURATIONé independente do back-end do cache e não precisa ser alterado ao mudar parasymfony_l2. Consulte Instâncias separadas de cache e sessão.
symfony_l2 manualmente no app/etc/env.php. Configure-a por meio de .magento.env.yaml para que ece-tools aplique e mantenha a configuração durante a implantação. Consulte Configurar Symfony cache L2.Pré-carregar chaves
As chaves de pré-carregamento podem ser aplicadas a uma configuração symfony_l2 se você usar o posicionamento correto (em backend_options ou remote_backend_options). No entanto, a Adobe não recomenda usar chaves de pré-carregamento com symfony_l2. A implementação de pré-carregamento symfony_l2 busca chaves uma de cada vez, de modo que não reduz viagens de ida e volta da mesma forma que faz para RemoteSynchronizedCache, e pode aumentar a carga no Valkey sem um benefício de desempenho.
O recurso de pré-carregamento permite fornecer uma lista de chaves usadas com frequência que o Magento busca em um único pipeline no primeiro acesso durante uma solicitação. O Magento então mantém os valores obtidos na memória PHP para o resto dessa solicitação, o que reduz viagens de ida e volta repetidas para Redis ou Valkey e pode melhorar o desempenho de inicialização da solicitação para essas chaves.
Você pode identificar chaves usadas com frequência monitorando comandos ativos em Redis ou Valkey:
As chaves de pré-carregamento estão configuradas no arquivo de configuração .magento.env.yaml. Este exemplo mostra a configuração do Adobe Commerce 2.4.8 e versões anteriores que oferecem suporte a 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 listar as chaves, execute o seguinte comando:
redis-cli -p 6370 -n 1 MONITOR > /tmp/list.keys
Após 10 segundos, pressione Ctrl+C. Em seguida, execute o seguinte comando:
cat /tmp/list.keys | grep "HGET" | awk '{print $5}' | sort | uniq -c | sort -nr | head -n 50
Este log lista as chaves que você pode pré-carregar. Para ver o conteúdo de uma chave, execute o seguinte comando:
redis-cli -p 6370 -n 1 hgetall "<key_name>"
Habilitar cache obsoleto
O cache obsoleto é um recurso de cache L2 que permite ao Adobe Commerce fornecer um valor de cache local existente de /dev/shm enquanto outra solicitação já está regenerando a mesma entrada. Isso impede que solicitações simultâneas aguardem. Isso reduz os carimbos do cache e a contenção de bloqueio durante a regeneração de entradas de cache caras.
Para o Adobe Commerce 2.4.9 e posterior, defina VALKEY_BACKEND: symfony_l2 no arquivo .magento.env.yaml:
stage:
deploy:
VALKEY_BACKEND: symfony_l2
O ece-tools gera automaticamente um front-end default e um front-end stale_cache_enabled e mapeia os seguintes tipos de cache para o front-end habilitado para obsoletos: layout, block_html, reflection, config_integration, config_integration_api, full_page e translate. Nenhuma configuração manual use_stale_cache ou de front-end é necessária para esses tipos. Esse mapeamento automático é um exemplo de habilitação seletiva de cache obsoleto. Somente tipos de cache específicos usam o front-end habilitado para obsoletos, não todos eles. Para personalizar quais tipos são mapeados para stale_cache_enabled, ou para adicionar tipos além dos padrões, consulte Personalizar a Symfony configuração do cache L2.
full_page não é relevante para projetos de infraestrutura do Adobe Commerce na nuvem porque eles usam o Fastly para armazenamento em cache de página inteira. Os exemplos de configuração manual nesta seção omitem full_page por esse motivo, mesmo que ece-tools o inclua no mapeamento symfony_l2 padrão.A configuração herdada a seguir se aplica ao Adobe Commerce 2.4.8 e versões anteriores, que usam RemoteSynchronizedCache e exigem cache obsoleto manual e configuração de front-end. A mesma recomendação seletiva sobre global se aplica aqui.
Como funciona o back-end herdado do RemoteSynchronizedCache
Com RemoteSynchronizedCache, o Magento mantém duas cópias de cada entrada de cache: uma cópia local em /dev/shm e uma cópia remota em Redis ou Valkey. Quando a cópia remota não está disponível e já existe um bloqueio de regeneração para essa chave, as solicitações simultâneas podem receber o valor local anterior em vez de aguardar até que o valor novo seja gravado.
Para habilitar o cache obsoleto para a versão 2.4.8 e versões anteriores, configure-o no arquivo .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, o que aplica o comportamento de cache obsoleto a todas as entradas de cache que usam esse front-end. Os principais tipos de cache do Magento funcionam conforme esperado com essa configuração. No entanto, se o seu projeto incluir código personalizado ou extensões que gravam no cache por meio da API \Magento\Framework\App\Cache genérica (por exemplo, $this->cache->save()) sem um front-end de cache dedicado, essas entradas também poderão servir valores obsoletos durante a regeneração.default e habilite-o somente para os tipos de cache selecionados, conforme mostrado abaixo.Habilitar cache obsoleto por tipo de cache individualmente (herdado)
Você pode habilitar o cache obsoleto apenas para os tipos de cache selecionados definindo um front-end de cache dedicado no .magento.env.yaml e mapeando os tipos de cache selecionados para ele. Essa abordagem manual se aplica ao back-end herdado RemoteSynchronizedCache; o symfony_l2 executa esse mapeamento automaticamente, conforme descrito acima.
Para funcionar corretamente, o front-end personalizado deve ser definido como um front-end completo em CACHE_CONFIGURATION.frontend. Definir apenas use_stale_cache: true para um novo nome de front-end não é suficiente.
Exemplo de configurações
Para Redis nas versões 2.4.8 e anteriores, a seguinte configuração habilita o cache obsoleto para os tipos de cache layout, reflection, config_integration, config_integration_api e translate, enquanto deixa outros que usam o front-end padrão com cache obsoleto desabilitado:
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 o novo front-end mantenha o mesmo comportamento.Configurar cache L2 do Symfony
O Adobe Commerce 2.4.9 e versões posteriores oferecem suporte ao back-end do cache symfony_l2. O back-end do symfony_l2 é a implementação de cache que o Adobe Commerce usa para gerenciar o comportamento dos caches L1 e L2. Ele não substitui Redis ou Valkey como o serviço de cache remoto.
symfony_l2 por meio da variável de implantação .magento.env.yaml para que ece-tools aplique e mantenha a configuração durante a implantação. Não configure symfony_l2 manualmente em app/etc/env.php, pois a implantação pode substituir as alterações manuais de env.php. Se ece-tools não aplicar symfony_l2, o Commerce poderá recorrer ao cache baseado em arquivos, o que pode aumentar a E/S de disco, adicionar sobrecarga de replicação do sistema de arquivos em ambientes de vários nós e reduzir o desempenho.Para usar o cache do symfony_l2 para o Adobe Commerce 2.4.9, siga estas etapas:
-
Verifique se o projeto de nuvem está usando o pacote
ece-toolsv2002.2.12 ou posterior. -
Definir a variável de implantação no arquivo
.magento.env.yaml:VALKEY_BACKEND=symfony_l2.code language-yaml stage: deploy: VALKEY_BACKEND: symfony_l2
Definir a variável de implantação VALKEY_BACKEND como symfony_l2 cria automaticamente a configuração completa do cache L2 com base nos detalhes de conexão do serviço Valkey, incluindo os front-ends default e stale_cache_enabled, com tipos comuns de cache já mapeados. A definição de CACHE_CONFIGURATION é opcional e necessária somente se você quiser personalizar opções específicas de back-end.
cleanup_percentage). Isso reduz a carga de I/O de disco e de back-end, além de melhorar a consistência do cache. Consulte Desempenho e confiabilidade aprimorados do cache Symfony L2 no Guia de Configuração do Adobe Commerce.ece-tools) e é aplicado automaticamente durante a implantação quando você atualiza para a versão mais recente do ece-tools. Atualize para a versão mais recente do ece-tools para receber o patch.Personalizar a configuração do cache L2 Symfony
ece-tools deriva automaticamente os detalhes de conexão Valkey (server, port, database, serializer, compression_lib, persistent_id) para os front-ends default e stale_cache_enabled. Para personalizar outras opções de back-end, como o diretório de cache local, defina CACHE_CONFIGURATION com _merge: true junto com VALKEY_BACKEND: symfony_l2. Os valores definidos aqui substituem os padrões correspondentes gerados automaticamente; todas as opções omitidas continuam a usar os valores que ece-tools deriva automaticamente.
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, substitua server ou port somente se estiver apontando intencionalmente para um ponto de extremidade de cache diferente do serviço Valkey do seu projeto. O pacote ece-tools deriva esses valores automaticamente de sua relação de serviço Valkey.server, seu valor deverá ser localhost ao conectar-se ao serviço Valkey do projeto. Fornecer um valor incorreto de server ou port faz com que a implantação falhe com um erro de conexão de cache.Dimensionamento da memória cache L2 para a Adobe Commerce Cloud
O cache L2 usa um sistema de arquivos temporário (/dev/shm) como seu mecanismo de armazenamento. Diferentemente dos armazenamentos de valores-chave especializados, o tmpfs não tem uma política de remoção de chaves, portanto o uso da memória pode crescer sem limites. Para evitar a exaustão, o Adobe Commerce limpa automaticamente o armazenamento L2 quando o uso atinge um limite configurável (95% por padrão). Você pode controlar o consumo de memória solicitando uma montagem /dev/shm maior ou reduzindo o limite de limpeza.
Ajuste o uso máximo da memória cache L2 com base nos requisitos do seu projeto. Use um dos seguintes métodos:
- Para ajustar o tamanho de montagem
/dev/shm, crie um tíquete de suporte. Para este cenário, a Adobe recomenda definir o tamanho de montagem do/dev/shmpara 15 GB. - Ajuste a propriedade
cleanup_percentageno nível do aplicativo para limitar o uso do armazenamento e liberar memória disponível para outros serviços.
Você pode ajustar a configuração na configuração de implantação no grupo de configuração de cachecache/frontend/default/backend_options/cleanup_percentage.
cleanup_percentage foi introduzida no Adobe Commerce 2.4.4.Os seguintes exemplos mostram o código de configuração no arquivo .magento.env.yaml:
Para o Commerce 2.4.9 e posterior, use a seguinte configuração para definir o limite de limpeza como 90%:
| code language-yaml |
|---|
|
Para o Commerce 2.4.8 e versões anteriores, use a seguinte configuração para definir o limite de limpeza como 90%:
| code language-yaml |
|---|
|
Os requisitos de cache variam de acordo com a configuração do seu projeto e o código personalizado de terceiros. Dimensione a memória cache L2 para que o cache possa operar sem ocorrências frequentes de limite.
Idealmente, o uso da memória cache L2 estabiliza abaixo do limite para evitar a limpeza frequente do armazenamento.
Você pode verificar o uso da memória de armazenamento em cache L2 em cada nó do cluster executando o seguinte comando da CLI e revisando a linha /dev/shm.
df -h /dev/shm
O uso varia entre os nós, mas converge para um valor semelhante.
Exemplos de configuração
Use os exemplos a seguir como ponto de partida para as configurações do serviço Redis ou Valkey.
Aplicar todas as recomendações de práticas recomendadas
Para VALKEY_BACKEND: symfony_l2, deixe ece-tools gerar os front-ends default e stale_cache_enabled e seus mapeamentos do tipo cache. Não defina use_stale_cache no front-end default amplo. O bloco CACHE_CONFIGURATION abaixo contém somente substituições de opção de back-end explícitas.
| code language-yaml |
|---|
|
Use a seguinte configuração para o Redis no Adobe Commerce 2.4.8 e versões anteriores:
| code language-yaml |
|---|
|
Separar cache obsoleto por tipo de cache
| code language-yaml |
|---|
|
| code language-yaml |
|---|
|